为 promise returns 绑定多个回调解析第一个 promise 的值,而不是第二个
Binding multiple callbacks for promises returns resolve value of first promise, not second
我有以下代码作为我正在做的一些编码练习的一部分:
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('hello world');
}, 2000);
});
var promiseTwo = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('hello again!');
}, 2000);
});
promise.then(promiseTwo).then((data) => {
console.log(data)
})
记录数据时,它读取 hello world
而不是 hello again!
。这是为什么?我的想法是 promise.then(promiseTwo).then((data) => { console.log(data) })
行
将解决第一个承诺,然后将第二个承诺作为回调传递给 hello again!
。为什么 promiseTwo
中的解析永远不会从 .then
方法中得到 return?
因为您没有在 then
中返回 promiseTwo
,您只是调用它,尝试:
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('hello world');
}, 2000);
});
var promiseTwo = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('hello again!');
}, 2000);
});
promise.then(() => promiseTwo).then((data) => {
console.log(data)
})
我有以下代码作为我正在做的一些编码练习的一部分:
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('hello world');
}, 2000);
});
var promiseTwo = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('hello again!');
}, 2000);
});
promise.then(promiseTwo).then((data) => {
console.log(data)
})
记录数据时,它读取 hello world
而不是 hello again!
。这是为什么?我的想法是 promise.then(promiseTwo).then((data) => { console.log(data) })
行
将解决第一个承诺,然后将第二个承诺作为回调传递给 hello again!
。为什么 promiseTwo
中的解析永远不会从 .then
方法中得到 return?
因为您没有在 then
中返回 promiseTwo
,您只是调用它,尝试:
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('hello world');
}, 2000);
});
var promiseTwo = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('hello again!');
}, 2000);
});
promise.then(() => promiseTwo).then((data) => {
console.log(data)
})