我有一个端点,如果有更多东西需要获取,我会返回一个下一个令牌,而我正在编写的代码获取它看起来像这样:
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并使用完成回调,但完成回调仅适用于第一次调用。
答案 0 :(得分:1)
您可以添加回调参数:
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!');
});