javascript - jquery处理递归ajax调用,如何告诉浏览器它已经完成

标签 javascript jquery ajax

我有一个端点,如果有更多东西要获取,它会返回下一个 token ,而我编写的用于获取它的代码如下所示:

        function get_all_entities(campaign_id, page){
            get_campaign_entities(campaign['id'], page)
                .success(function(data){
                    if (data['next']){
                        console.log(data['next'])
                        get_all_entities(campaign_id, page+1)
                    }
                })
        }

        get_all_entities(campaign['id'], 1)

现在,虽然这有效,但实际调用它的函数 get_all_entities(campaign['id'], 1) 无法知道一切何时完成。我尝试像这样添加一个 while 循环,但它使我的浏览器崩溃(一切都卡住了)

        function get_all_entities(campaign_id, page){
            all_done = false
            get_campaign_entities(campaign['id'], page)
                .success(function(data){
                    if (data['next']){
                        console.log(data['next'])
                        get_all_entities(campaign_id, page+1)
                    }
                    else{
                        all_done = true
                    }
                })
            while (!all_done){
                setTimeout(function(){
                }, 2000);
            }
            return all_done
        }

我还尝试返回 get_campaign_entities 并使用完成回调,但完成回调仅适用于第一次调用。

最佳答案

您可以添加回调参数:

function get_all_entities(campaign_id, page, callback) {
  get_campaign_entities(campaign['id'], page)
    .success(function(data) {
      if (data['next']) {
        console.log(data['next'])
        get_all_entities(campaign_id, page + 1, callback)
      } else {
        callback();
      }
    })
}

get_all_entities(campaign['id'], 1, () => {
  console.log('Done!');
});

关于javascript - jquery处理递归ajax调用,如何告诉浏览器它已经完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42637687/

相关文章:

javascript - 如何将 UTC 日期格式字符串解析为本地日期时间?

Jquery ajax 将文本发送到 txt

javascript - 在 PHP 中检测 AJAX 请求来自哪个文件

javascript - 如何将 date-fns 与 Vue 类组件一起使用?

javascript - VUE引擎如何评估属性代码?

javascript - JavaScript 的替代品

javascript - 尝试用responseText替换行的innerhtml

javascript - 使用 JsDoc 转换 Typescript

javascript - 如何在引导表中对文件大小进行排序?

javascript - 使用 JavaScript 的 Chrome 和 Safari XSLT