gpt4 book ai didi

javascript - 为什么这个 javascript 函数生成器不起作用?

转载 作者:行者123 更新时间:2023-12-02 14:33:36 26 4
gpt4 key购买 nike

const f = n => new Promise((resolve, reject) => {
setTimeout(()=>{
if (n > 2){
resolve({result: `${n} is higher than 2`});
} else {
resolve({error: `${n} is lower than 2`});
}
}, 1000);
});
function *m(){
const {result, error} = yield f(parseInt(process.argv[2]));
if(error){
console.log(error);
} else {
console.log(result);
}
}
m();

我使用的是node.js v6.2,当我执行 node file.js 344 时没有结果。如果我将调试器放入我选择的任何函数中,它在 Debug模式下不会停止。

只有当我使用const it = m();提取迭代器时它才会停止但我见过上述模式似乎是正确的例子。我缺少什么?谢谢。

最佳答案

当您调用m()时,您正在初始化生成器,但没有对其执行任何操作。为了产生 yield ,您需要对 m() 的结果调用 next()

let generator = m()
generator.next().value.then(result => console.log(result))

// will log { result: '344 is higher than 2' } to the console

当您调用next时,生成器的执行将恢复,并在遇到yield时暂停。在这种情况下,yield 返回一个 promise ,该 promise 将在 next 结果的 value 属性中可用。

https://davidwalsh.name/async-generators关于这个主题是一本很好的读物。

关于javascript - 为什么这个 javascript 函数生成器不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37641951/

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