Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery处理递归ajax调用,如何告诉浏览器它';结束了_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jquery处理递归ajax调用,如何告诉浏览器它';结束了

Javascript jquery处理递归ajax调用,如何告诉浏览器它';结束了,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个端点,如果有更多的东西要获取,它会返回下一个令牌,我为获取它而编写的代码如下所示: function get_all_entities(campaign_id, page){ get_campaign_entities(campaign['id'], page) .success(function(data){ if (data['next']){

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

        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(活动['id',1)
无法知道什么时候一切都完成了。我试着添加一个类似这样的while循环,但它会使我的浏览器崩溃(一切都冻结了)


我还尝试返回get_campaign_实体并使用done回调,但done回调仅适用于第一次调用

您可以添加回调参数:

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!');
});

简单有效的解决方案。如果你想的话,你可以“积累”数据,然后通过回调把数据传回来,这样你就有了你需要的任何数据。这比我开始用承诺做的要简单得多。非常感谢。
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!');
});