gpt4 book ai didi

javascript - 为什么这个异步生成器会导致 JavaScript 运行时挂起?

转载 作者:行者123 更新时间:2023-12-01 15:22:11 26 4
gpt4 key购买 nike

以下 JavaScript 导致运行时在 OSX 10.15.2 上的 Chrome (v80.0.3987.116) 和 Firefox (v72.0.2) 上挂起。

为什么?

请注意,我将迭代器函数标记为 async .

const iterable = {
async *[Symbol.iterator]() {
yield 'one'
}
}

console.log([...iterable])

最佳答案

因为现在你的[Symbol.iterator]方法不再返回 Iterator,它确实返回了 AsyncIterator。这仍然是一个带有 .next() 的对象方法,因此尝试迭代它的传播语法不会提示。但是对 .next() 的调用方法不再返回 {value:…, done:true}对象,它们总是返回一个 promise 。这些 promise 对象没有真实性done属性,所以你的迭代器永远不会停止......

你可以达到同样的结果

const iterable = {
*[Symbol.iterator]() {
while (true) {
yield
}
}
}
console.log([...iterable])

或者
const iterable = {
[Symbol.iterator]() {
return {
next() {
return {};
}
}
}
}
console.log([...iterable])

关于javascript - 为什么这个异步生成器会导致 JavaScript 运行时挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60365857/

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