我无法解释Promises / A +规范的含义......
https://promisesaplus.com/#point-23
如果您有一个承诺并且使用一个参数调用。那么这是否意味着无论成功或失败都会调用单个参数?
我觉得它可以解释这个问题。我想我最关心的是Q.
答案 0 :(得分:2)
.then()
处理程序的第一个参数,无论它是否是唯一参数,始终是已完成的处理程序,仅在履行承诺时才会调用。如果存在或不存在第二个参数,则第一个参数不会被区别对待。
答案 1 :(得分:2)
所以对于不确定的人,我制作了一个可以在节点REPL中运行的测试脚本。明确的答案是,不会因为错误的依恋而无法取得成功。
var Q = require('q');
//call with whether or not the promise will resolve
function aPromise (bool) {
var def = Q.defer();
if (!bool) {
def.reject("oooo0o0o00o0 rejected");
}
def.resolve('winner winner chicken dinner');
return def.promise
}
var whatGonnaBe = aPromise(false)
//The Example
whatGonnaBe
.then(function (response) {
console.log('1')
console.log(JSON.stringify(response) + '1');
})
.then(function (response) {
console.log('2')
console.log(JSON.stringify(response) + '2');
},
function (response) {
console.log('3')
console.log(JSON.stringify(response) + '3');
})
答案 2 :(得分:1)
不,第一个参数始终是“成功”或“已解决”的参数。第二个参数总是失败参数,你可以在将promises链接在一起并且只有一个“fail”参数来处理所有失败时省略它。这段代码只是概念性的:
promise1.then(function() {
return promise2;
}).then(function() {
return promise3;
}).then(function() {
/* everything succeeded, move forward */
}, function() {
/* catch any failure by any of the promises */
});