我试图使用JavaScript promises递归调用异步函数,但是还没有找到可行的模式。
以下是我认为会起作用的代码:
var doAsyncThing = function(lastId){
new Promise(function(resolve, reject){
// async request with lastId
return resolve(response)
}
}
var recursivelyDoAsyncThing = function(lastId){
doAsyncThing(lastId).then(function(response){
return new Promise(function(resolve, reject){
//do something with response
if(response.hasMore){
//get newlastId
return resolve(recursivelyDoAsyncThing(newLastId));
}else{
resolve();
}
});
});
}
recursivelyDoAsyncThing().then( function(){
console.log('done');
});
为什么这个不起作用?我误解了什么?
有更好的模式来解决这个问题吗?