在承诺链中处理早期回报的最佳方式
Best way to handle early returns in chains of promises?
在Bluebird中处理早期返回而不抛出错误的最佳方法是什么。例如,我在下面有一个条件:
things.find(1)
.then(function(thing) {
if (thing.condition === true) {
return thing
} else {
// early return?
}
})
.then(function(thing) {
return doStuff(thing)
})
一旦.then
链形成,其自然行为是随着每个阶段的稳定而逐渐运行到完成。
对于"提前退货"(这不是一个好短语,但我们知道你的意思),你有三个选择:
- 抛出一个错误,或返回一个被拒绝的promise,以绕过所有成功处理程序,直到下一个catch(或链的末端)
- 返回一个保证永远不会和解的承诺-例如
return new Promise()
- 相应地组成
.then
链(Esailija的回答)
things.find(1).then(function(thing) {
if (!thing.condition) return;
return doStuff(thing)
.then(...);
.then(...);
})
相关文章:
- 我的职位回报太快了,如何做出承诺
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 有条件更新d3.js力图中节点的最佳方法
- 为react组件传递道具的最佳方式
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- Angularjs 1.5.x本地化最佳实践
- 处理浮点错误的最佳方法是什么
- javascript导入的最佳实践是什么
- MobileFirst:在客户端运行计时器作业-最佳选项
- 在ng重复循环中显示条件内容的最佳方式是什么
- 在phonegap中为android调用onload函数的最佳方式
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 从数组中删除元素的最佳方法是:javascript/jquery
- 链接两个网页或网络应用程序的最佳方式
- 什么's是连接供应商js文件的最佳方式
- Express服务器中语言子域的最佳实践
- 什么's是在javascript中迭代项的最佳方式