我目前正试图将另一个.then()链接到带有Bluebird
库的递归承诺链的末尾。
我的代码看起来像这样
exports.fetchAll = function() {
fetchItems = function(items) {
return somethingAsync()
.then(function(response) {
items.push(response.data);
if (response.paging.next) {
fetchItems();
} else {
return items;
}
})
.catch(function(error) {
console.log(error);
});
}
return fetchItems([], 0);
}
/// In Some other place
fetchAll().then(function(result){ console.log(result); });
截至目前,fetchAll调用结束时的.then
会立即返回。如何使它在递归链的末尾执行?
答案 0 :(得分:1)
当你以递归方式调用函数fetchItems
时,你需要返回值,就像这样
if (response.paging.next) {
return fetchItems(); // Note the `return` statement
} else {
return items;
}
现在,fetchItems
返回另一个承诺,只有在该承诺解决后才会调用最后的then
。