递归承诺链末端的链式动作
Chain action at the end of a recursive promise chain
我目前正在尝试将另一个。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
会立即返回。如何使它在递归链的末端执行?
当你递归地调用函数fetchItems
时,你需要返回值,像这样
if (response.paging.next) {
return fetchItems(); // Note the `return` statement
} else {
return items;
}
现在,fetchItems
返回另一个承诺,并且只有在该承诺被解决后才会调用最后的then
。
相关文章:
- 递归承诺调用 - 内存范围变量问题
- JavaScript 中的递归承诺
- 蓝鸟递归承诺未得到解决/实现
- 多个条件异步递归函数和 jQuery 承诺
- 使用承诺的异步递归
- 如何递归调用承诺函数
- 使用承诺以递归方式检索分页数据
- 承诺的递归函数不会触发返回语句
- 理解递归函数的节点.js中的承诺
- ES6/When.js-在递归承诺链中处理承诺解析
- 将递归承诺的结果添加到数组中
- 使用递归函数的承诺
- 在递归中使用javascript承诺进行Api调用
- 带有承诺的Javascript递归函数
- Bluebird的递归承诺没有返回
- Javascript承诺递归返回索引
- 递归承诺链末端的链式动作
- NodeJS承诺,递归,异步继续
- 生成一个依赖于递归承诺的承诺
- 如何在递归地创建承诺时避免内存泄漏