简单的ES6承诺问题 - 交换解析和拒绝参数

时间:2016-05-17 15:46:27

标签: javascript promise ecmascript-6 es6-promise

在这里,我希望在控制台中看到4和5。我认为,一旦第一个add结算,then将通过匿名函数,该函数返回另一个add

那么我错过了什么导致只有第一个add被运行?

小提琴:http://www.es6fiddle.net/iobmmhs3/

var add =  function(a, b) {
    return new Promise(function(reject, resolve) {
        console.log(a+b);
        resolve(a+b);
    });
};

add(1,3)
.then(function() {
    return add(2,3)
})

1 个答案:

答案 0 :(得分:4)

您的resolvereject是向后的:

var add =  function(a, b) {
    return new Promise(function(resolve, reject) {
        //                      ^^^^^^^  ^^^^^^
        console.log(a+b);
        resolve(a+b);
    });
};

add(1,5)
.then(function() {
    return add(2,2)
});

小提琴:http://www.es6fiddle.net/iobm7rb7/

有关文档,请参阅MDN。为了将来参考,如何在不知道传递给构造函数的函数的签名的情况下调试它:在控制台中,您应该看到Uncaught in Promise错误,这表明您的承诺被拒绝,并且没有有拒绝处理程序。