【发布时间】:2021-04-09 08:17:15
【问题描述】:
我创建了一个生成器,它产生 setTimeout 并返回一个值...
const wait_and_say = (a) => {
console.log(`Wait for 4 second to get a value from Generator`);
return setTimeout(() => {
return a;
}, 4000);
};
const getAnumber = function*() {
yield wait_and_say(3.145);
yield wait_and_say("Adams");
yield wait_and_say("Get Cone");
yield wait_and_say(5.12455);
};
const newNumber = getAnumber();
console.log(newNumber.next().value);
console.log(newNumber.next().value);
console.log(newNumber.next().value);
console.log(newNumber.next().value);
但输出与上述代码不符。 输出未定义,未定义,未定义, 但是欲望输出是等待或4秒才能得到一个数字。
请帮忙!!!!修复
【问题讨论】:
-
"产生 setTimeout 并返回一个值" - 不,这不是它的作用,它不是这样工作的。你为什么要在这里使用生成器?你应该使用 promises 和
async/await来等待超时。 -
我不确定您为什么声称输出未定义。它记录了每个
setTimeout()的返回值,它是一个数字(或 Node.js 的Timeout对象setTimeout())
标签: javascript node.js webpack ecmascript-6