我有一个端点,如果有更多东西要获取,它会返回下一个 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/