在下面的代码中,从 success
返回另一个 promise 的原因是什么?或err
方法?如您所见,someFunction
已经返回了一个 promise ,我们可以轻松地将其返回给调用者。
我不明白在我们不装饰/操纵响应或错误的情况下做出另一个 promise 的原因。是否有我不知道的用例?
function() {
var p = $q.defer();
someModule.someFunction(input)
.then(
function(success) {
return p.resolve(success);
},
function(err) {
return p.reject(err)
}
);
return p.promise;
};
最佳答案
这整个事情可以替换为:
function someFunc() {
return someModule.someFunction(input);
}
创建自己的 Promise 被认为是一种反模式,然后当您可以使用已经存在的 Promise 时,您可以解析并拒绝该 Promise。
不执行任何操作的成功和错误处理程序被认为是一种反模式,这些处理程序基本上只执行默认行为。
实际上,您的代码片段与直接返回 Promise 的唯一不同之处在于,它确保返回的 Promise 是 Q Promise,而不是返回任何类型的 Promise .someFunction()
。但是,如果这是一个要求,那么它可以更直接地转换为 Q promise ,而无需所有额外的代码。
这是一个discussion of promise anti-patterns要避免,因为有更好的方法。
关于javascript - 从另一个 promise 返回 promise 的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32671998/