Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未从生成器函数调用console.log_Javascript - Fatal编程技术网

Javascript 未从生成器函数调用console.log

Javascript 未从生成器函数调用console.log,javascript,Javascript,我第一次在javascript中使用生成器函数,遇到了一些有趣的问题 代码: 从未调用过“TESTING 2”console.log。如果我不将maxDate传递给生成器函数,它也不会引发错误。这一定是发电机的问题,我不见了 编辑以显示用法 recur(1, 'day')(moment()) 似乎需要调用next以在第一个yield之前运行代码?在生成器函数中,第一个yield语句之前的代码在生成器运行到该点之前执行: let a = function * () { console.log

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

代码:

从未调用过“TESTING 2”console.log。如果我不将maxDate传递给生成器函数,它也不会引发错误。这一定是发电机的问题,我不见了

编辑以显示用法

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

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

在生成器函数中,第一个
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 }

在生成器函数中,第一个
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 }

使用生成器的代码在哪里?使用生成器的代码在哪里?我认为这就是问题所在。需要对返回的生成器对象调用Next以在第一个yield之前运行代码?是的,必须调用Next以继续执行下一个yield语句。在此之前,您可能认为生成器在函数的第0行“暂停”。我认为这就是问题所在。需要对返回的生成器对象调用Next以在第一个yield之前运行代码?是的,必须调用Next以继续执行下一个yield语句。在此之前,您可能认为生成器在函数的第0行“暂停”。