gpt4 book ai didi

javascript - console.log 没有从生成器函数中调用

转载 作者:行者123 更新时间:2023-11-28 18:15:42 24 4
gpt4 key购买 nike

我第一次在 javascript 中使用生成器函数,并遇到了一些有趣的问题。

代码:

import moment from 'moment';

export default function recur(quantity, units) {
console.log('TESTING 1');

function* recurGenerator(startDate, maxDate) {
console.log('TESTING 2');

if (maxDate === undefined) {
this.throw('Argument maxDate is undefined');
}

let nextDate = moment(startDate).clone();
maxDate = moment(maxDate);

for (;;) {
nextDate = moment(nextDate).clone().add(quantity, units);
if (nextDate.isAfter(maxDate)) yield null;
yield nextDate;
}
}

return recurGenerator;
}

“TESTING 2”console.log 永远不会被调用。如果我不将 maxDate 传递给生成器函数,它也不会引发错误。这一定是我缺少的关于生成器的东西。

编辑以显示用法

recur(1, 'day')(moment())

似乎需要在第一次yield之前调用next来运行代码?

最佳答案

在生成器函数中,第一个 yield 语句之前的代码会在生成器执行到该点之前执行:

let a = function * () {
console.log(1);
yield 2;
yield 3;
}

let b = a(); // no console output!
let c = b.next(); // prints 1 to the console
c // { value: 2, done: false }

关于javascript - console.log 没有从生成器函数中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40791734/

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