可以简化嵌套的延迟Q Promises解析吗
Can nested deferred Q Promises resolves be simplified?
我结合了一些典型的(反)模式,使用Q 库:
其中有多少可以简化?(或毫无意义)特别是:
- A:
deferred.resolve(...
中的值超过返回值并立即解析的值是多少?只是事实上,下一个代码得到的代码被执行了,即doSomeMore()
- 如果是这样的话,对于A2来说,这在这个代码中是没有意义的
- B:
deferred.reject
比throw throw new Error('')
的值是多少 -
C: 尝试接球也让我很恼火。只是为了确保
doSomeMore()
?函数foo(u){
var deferred = Q.defer(); bar(u).then( function (v) { if (v==42) { deferred.resolve( Q(null) ); // A } else { try { var controller = new Controller(); deferred.resolve( controller ); // A2 } catch (error) { deferred.reject(error); // B,C } doSomeMore(); } return deferred.promise; });
}
是的,此代码的目的似乎是确保执行doSomeMore()
,而不管构造Controller
时发生了什么。不过,你可以更容易地获得:
function foo(u) {
return bar(u).then(function (v) {
if (v == 42) {
return null;
} else {
try {
return new Controller();
} finally {
doSomeMore();
}
}
});
}
可能是这样的吗?
return bar(u).then(function (v) {
if (v==42)
return null;
return new Controller();
}).finally(function() { doSomeMore(); });
相关文章:
- 可以简化嵌套的延迟Q Promises解析吗
- onclick函数需要双击,因为类分配延迟
- 更多延迟动画
- 对父作用域的指令更新延迟了一步
- 为JS函数添加延迟
- 带有延迟的循环每次应运行5次
- 关键帧之间的css3动画延迟
- 如何在有延迟的情况下对两个代码进行积分
- 如何为.css状态的更改添加延迟
- Angular.js延迟控制器初始化
- 在延迟时设置Whois脚本
- 如何在Javascript中延迟setInterval
- 如何在一个元素动画之后延迟
- 如何将一个方法延迟到另一个方法首先完成,javascript
- jQuery延迟了ajax调用的循环
- 如何减少在移动网络应用程序上播放声音的延迟
- 如何将GreaseMonkey中的XMLHttpRequest延迟到目标页面加载完成
- 实现延迟的jquery更改事件处理程序
- 延迟高亮显示文本区域中的文本
- 如何利用多链接延迟检查并显示ping结果,然后使用JavaScript选择最快的URL