JavaScript 将值发送到生成器

示例

通过值传递给生成器,可以将其发送给生成器next()。

function* summer() {
    let sum = 0, value;
    while (true) {
        // 接收发送的值
        value = yield;
        if (value === null) break;

        // 汇总值
        sum += value;
    }
    return sum;
}
let generator = summer();

// proceed until the first "yield" expression, ignoring the "value" argument
generator.next();

// from this point on, the generator aggregates values until we send "null"
generator.next(1);
generator.next(10);
generator.next(100);

// 关闭发电机并收集结果
let sum = generator.next(null).value;  // 111