javascript - 在 ES6 中,第一次调用迭代器的 `next` 方法时参数会发生什么变化?

标签 javascript generator v8 ecmascript-harmony

如果你有一个生成器,比如,

function* f () {
  // Before stuff.
  let a = yield 1;
  let b = yield 2;
  return [a,b];
}

然后运行

var g = f();
// this question is over this value.
g.next(123); // returns: { value: 1, done: false }
g.next(456); // returns: { value: 2, done: false }
g.next(); // returns: { value: [ 456, undefined ], done: true }

第一次调用.next()设置a123,第二次调用设置b456,但是在最后一次调用 .next() 时返回,

{ value: [ 456, undefined ], done: true }

第一次调用 g.next 时参数是否丢失?他们怎么了?使用上面的例子,如何设置a?

最佳答案

尝试:

var g = f();
// this question is over this value.
g.next(); // returns: { value: 1, done: false }
g.next(123); // returns: { value: 2, done: false }
g.next(456); // returns: { value: [123, 456], done: true }

关于javascript - 在 ES6 中,第一次调用迭代器的 `next` 方法时参数会发生什么变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271216/

相关文章:

python - 在 while 循环中使用生成器并在每次生成后进行评估

python - 一起循环两个生成器

javascript - Nashorn 相当于 V8 吗?

c++ - Nodejs C++ 事件发射器。附加错误。 MakeCallback 中的非函数。方法 = 发出中止陷阱 : 6

javascript - Google Geocoding - 抓取地址和坐标

javascript - 有没有办法在显示图像之前使用 JavaScript 来裁剪图像并调整图像大小?

python - 从 Python 中的生成器获取多个单独的值

javascript - 在 bool 语句中使用 continue/break [V8]

javascript - SQLite 数据库与 JavaScript

javascript - 使用 $q.race 为 $q Promise 添加超时