[英]Chaining .then() calls in ES6 promises
我认为在使用ES6 Promises时应该可以链接.then()方法。 换句话说,我认为当一个承诺解决传递给函数解析值应该传递给任何链接,然后处理程序。 如果是这样的话怎么来的价值在于在后面不确定的链接,然后在下面处理程序?
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
});
每个then()
都可以返回一个值,该值将用作下一个then()
调用的已解析值。 在你的第一个then()
,你不返回任何东西,因此在下一个回调中未定义value
。 返回第一个value
,使其在第二个中可用。
function createPromise() { return new Promise((resolve) => { resolve(true); }); } createPromise() .then((value) => { console.log(value); // expected: true, actual: true return value; }) .then((value) => { console.log(value); // expected: true, actual: true });
你必须将它返回到承诺中传递它。 或者创建一个随之解决的新承诺。
createPromise()
.then((value) => {
return value;
})
.then((value) => {
console.log(value);
});
要么
createPromise()
.then((value) => {
return new Promise.resolve(value);
})
.then((value) => {
console.log(value);
});
.then
总是返回一个Promise,它解析为函数回调中返回的值。 由于在第一次调用.then
时undefined
返回任何内容,因此undefined
将成为返回的Promise的已解析值。
换句话说,如果你想在第二次调用.then
解析为true
,你必须在第一次调用中返回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
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.