【发布时间】:2015-08-11 05:10:14
【问题描述】:
所以我有一个包含多个这样的检查的承诺
function test(){
var deferred = q.defer()
var passed = false
if(!passed){
deferred.reject("Don't proceed")
//return
} else {
if(!passed){
deferred.reject("Don't proceed")
} else {
if(!passed){
deferred.reject("Don't proceed")
} else {
setTimeout(function(){
console.log("Hello");
deferred.resolve()
}, 100);
}
}
}
return deferred.promise
}
这看起来很糟糕,因为底部有一个金字塔。我想知道“q”中是否有类似 return 的东西可以使代码看起来更好?比如这样:
function test(){
var deferred = q.defer()
var passed = false
if(!passed){
deferred.reject("Don't proceed")
return
}
if(!passed){
deferred.reject("Don't proceed")
return
}
if(!passed){
deferred.reject("Don't proceed")
return
}
setTimeout(function(){
console.log("Hello");
deferred.resolve()
}, 100);
return deferred.promise
}
这绝对行不通,因为它在返回 promise 之前返回,但我想知道是否有类似 return 的东西?
【问题讨论】:
-
为什么不使用
if (passed)继续,然后在函数的最后,你可以做一个测试,看看你是否应该拒绝。 -
在每种情况下,您都可以返回 deferred.promise 而不是只返回。不过会很乱。
标签: javascript promise q