【问题标题】:Chain of promise.resolve() giving weird answerpromise.resolve() 链给出奇怪的答案
【发布时间】:2020-04-09 23:47:10
【问题描述】:

下面是我想要理解的代码:

示例:1

Promise.resolve('res1')
    .then(Promise.resolve('res2'))
    .then(Promise.resolve('res3'))
    .then(function (result) {
        console.log(result);
    });

输出是: res1

但我无法理解为什么它是 res1 而不是 res3。 下面是按预期执行的代码:

示例:2

    Promise.resolve('res1')
    .then(function (result1) {
        console.log(result1);
        return Promise.resolve('res2')
    })
    .then(function (result2) {
        console.log(result2);
        return Promise.resolve('res3')
    })
    .then(function (result) {
        console.log(result);
    });

它的输出是:

res1
res2
res3

因为在每个解析争论被传递到下一个函数之后,所以看起来很好,但是在示例:1 中的后续过程与示例:2 中的不同,例如解析字符串并将其传递给下一个函数。所以,我不会理解它背后的工作流程。提前致谢。

【问题讨论】:

  • .then 接受回调,在第一个示例中您没有给它回调,而是给它值。

标签: node.js asynchronous promise


【解决方案1】:

因为每次解决争论都会传递给下一个函数,所以看起来很好 -> 错了,它没有通过。 .then 处理程序之间的传递机制是returnPromise.resolve('res2') 只是一个表达式。您需要 return 该表达式的值,以便将其传递给下一个 .then 处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    相关资源
    最近更新 更多