在这里,我希望在控制台中看到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)
})
答案 0 :(得分:4)
您的resolve
和reject
是向后的:
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
错误,这表明您的承诺被拒绝,并且没有有拒绝处理程序。