1 2 3 4 5 | function *doMath() { let x = yield 1; let y = yield x + 10; let z = yield y * 10; } |
1 2 3 4 5 6 7 8 9 | let func = doMath(); func.next(); // -> {value: 1, done: false} func.next(); // -> {value: NaN, done: false} func.next(); // -> {value: NaN, done: false} func.next(); // -> {value: undefined, done: true} |
1 2 3 4 5 6 7 8 9 | let func = doMath(); func.next(); // -> {value: 1, done: false} func.next(1); // -> {value: 11, done: false} func.next(2); // -> {value: 20, done: false} func.next(3); // -> {value: undefined, done: true} |
1 2 3 4 5 6 7 8 9 10 11 12 | function *withReturn() { let x = yield 1; return x + 2; } let func = withReturn(); func.next(); // -> {value: 1, done: false} func.next(1); // -> {value: 3, done: true} func.next(); // -> {value: undefined, done: true} |
1 2 3 4 5 6 7 8 9 10 | for (let value of sample()) { console.log(value); } // -> 输出 1,2 和 3 ['a', ...sample(), 'b'] // -> [ 'a', 1, 2, 3, 'b' ] let set = new Set(sample()) set.size // -> 3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function debug(values) { for (let value of values) { console.log(value); } } function *seq(start = 0, number = 10) { while (number-- > 0) { yield start++; } } debug(seq()); // -> 输出从 0 到 9 的值 debug(seq(3)); // -> 输出从 3 到 12 的值 debug(seq(3, 5)); // -> 输出从 3 到 7 的值 |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |