【问题标题】:Difference between yield* and yield [duplicate]产量*和产量之间的差异[重复]
【发布时间】:2019-06-21 18:11:03
【问题描述】:

在下面的示例中,可以非常直接地了解“产量”在生成器函数中的作用。但显然它还有另一个版本'yield*'

function * loop(times){
   while(times){
     times--;
     yield times;
   }
}

let result = loop(2);
result.next() // {value: 1, done:false} 

有人可以解释'yield'和'yield*'之间的区别吗?

【问题讨论】:

标签: javascript


【解决方案1】:

yield* 运算符将迭代委托给另一个可迭代对象,如下所示:

// this function is more or less a no-op
function * iterate (iterable) {
  yield * iterable;
}

function * loop (times) {
   while (times) {
     times--;
     yield times;
   }
}

console.log('accepts iterables');
for (const value of iterate([1, 2, 3])) {
  console.log(value);
}

console.log('accepts generator iterators');
for (const value of iterate(loop(3))) {
  console.log(value);
}

const iterator = [1, 2, 3][Symbol.iterator]();

// skip first value
iterator.next();

console.log('accepts partially consumed iterators');
for (const value of iterate(iterator)) {
  console.log(value);
}

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 2021-11-19
    • 2020-02-24
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多