gpt4 book ai didi

javascript - 为什么将 javascript promise 传递给 `then` 会导致奇怪的行为?

转载 作者:行者123 更新时间:2023-11-30 16:19:26 26 4
gpt4 key购买 nike

es6 specification它声明将不可调用传递给 promise then 会将 promise“on fulfilled”处理程序设置为“identity”。在 another section根据规范,“身份”是一个评估给定值的函数。根据规范所说,我假设这段代码:

Promise.resolve("foo").then(Promise.resolve("bar")).then(v => console.log(v))

等于这段代码:

Promise.resolve("foo").then(v => Promise.resolve("bar")).then(v => console.log(v))

但是如果两个代码示例都在最新的 Chrome 或 Firefox 中执行,第一个输出“foo”,第二个输出“bar”。我在哪里误解了规范?

最佳答案

根据 ECMAScript-6 的 this section ,

If [[Handler]] is "Identity" it is equivalent to a function that simply returns its first argument.

因此,您可以将Identity 视为以下Arrow 函数

(first) => first

那么,你的 promise 链

Promise.resolve("foo").then(Promise.resolve("bar")).then(v => console.log(v))

有效地变成了

Promise.resolve("foo").then((first) => first).then(v => console.log(v))

这就是您得到 foo 的原因。

关于javascript - 为什么将 javascript promise 传递给 `then` 会导致奇怪的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com