为 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)
})