Javascript ES6中的Chaining.then()调用
我认为在使用ES6 Promises时,应该可以链接.then()方法。换句话说,我认为在解析承诺时,传递给resolve函数的值应该传递给任何链式处理程序。如果是这样的话,为什么值在下面的链式处理程序中没有定义Javascript ES6中的Chaining.then()调用,javascript,es6-promise,Javascript,Es6 Promise,我认为在使用ES6 Promises时,应该可以链接.then()方法。换句话说,我认为在解析承诺时,传递给resolve函数的值应该传递给任何链式处理程序。如果是这样的话,为什么值在下面的链式处理程序中没有定义 function createPromise() { return new Promise((resolve) => { resolve(true); }); } createPromise() .then((value) => { conso
function createPromise() {
return new Promise((resolve) => {
resolve(true);
});
}
createPromise()
.then((value) => {
console.log(value); // expected: true, actual: true
})
.then((value) => {
console.log(value); // expected: true, actual: undefined
});
你必须在承诺的范围内归还它才能传递它。或者创造一个新的承诺来解决这个问题
createPromise()
.then((value) => {
return value;
})
.then((value) => {
console.log(value);
});
或
每个then()
都可以返回一个值,该值将用作下一次then()
调用的解析值。在第一次then()
中,您不返回任何内容,因此值在下一次回调中未定义。在第一个中返回值
,使其在第二个中可用
函数createPromise(){
返回新承诺((解决)=>{
决心(正确);
});
}
createPromise()
。然后((值)=>{
console.log(value);//预期值:true,实际值:true
返回值;
})
。然后((值)=>{
console.log(value);//预期值:true,实际值:true
});
。然后
始终返回解析为函数回调中返回的值的承诺。由于在第一次调用时未返回任何内容,因此undefined
将成为所返回承诺的解析值
换句话说,如果要在对的第二次调用中解析true
,则必须在第一次调用中返回它,如下所示
createPromise() // returns a Promise
.then(function (value) {
console.log(value); // => true
return value; // now this will return a Promise that resolves the value `true`
}).then(function (value) {
console.log(value) // => true
});
如果需要更多信息,您可以参考以获取ES2015承诺。您不会返回任何内容以链接。然后()
用作值。
createPromise() // returns a Promise
.then(function (value) {
console.log(value); // => true
return value; // now this will return a Promise that resolves the value `true`
}).then(function (value) {
console.log(value) // => true
});