首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在无限的while循环中调用Ajax函数

如何在无限的while循环中调用Ajax函数
EN

Stack Overflow用户
提问于 2018-06-21 14:37:47
回答 1查看 109关注 0票数 0

谁能告诉我如何在无限的while循环中运行Ajax函数?

代码语言:javascript
复制
while(true){
    $.ajax({
         type: 'POST',
         data: {'constraintId': experimentId},
         url: '/calender-generation-status/',
         success: function(data){
              console.log("inside ajax");
     }
  });
}

这段代码的问题是while循环在成功attr之前一直在运行,而在成功attr之后的所有语句都没有执行。

EN

回答 1

Stack Overflow用户

发布于 2018-06-21 14:45:29

Websockets可能是你正在做的事情的一种更好的方法,当然,在不了解更多的情况下是不可能说的。不断地向服务器发出XHR调用对于两端来说都是大量的工作。

但是请回答您的问题:为了实现您的循环,您根本不使用循环;相反,您将从complete回调中启动下一个调用:

代码语言:javascript
复制
function doAjax() {
    $.ajax({
         type: 'POST',
         data: {'constraintId': experimentId},
         url: '/calender-generation-status/',
         success: function(data){
              console.log("inside ajax");
         },
         complete: doAjax   // <===
    });
}

或者更好:

代码语言:javascript
复制
function doAjax() {
    var stop = false;
    doCall();
    return {
        stop: function() {
            stop = true;
        }
    };
    function doCall() {
        $.ajax({
             type: 'POST',
             data: {'constraintId': experimentId},
             url: '/calender-generation-status/',
             success: function(data){
                  console.log("inside ajax");
             },
             complete: function() {
                 if (!stop) {
                     doCall();
                 }
             }
        });
    }
}

...which向doAjax的调用者返回一个对象,其中包含一个可用于停止该进程的stop方法。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50961900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档