我发现这个例子,我对从生成器获取生成器的最终值的方式感到惊讶。这是代码:
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const [...values] = foo();
根据我对生成器的理解,我认为解构生成器执行相当于:
const array = [];
for(const val of foo()) {
array.push(val)
}
所以,我的问题是:这是获取生成器函数值的有效方法吗?还有哪些其他方法可以实现此目的?
最佳答案
迭代(可迭代和迭代器)协议(protocol)为您提供了无限的可能性...
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const [...values] = foo();
console.log(...values);
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const [a, b, c] = foo();
console.log(a, b, c);
function* foo() {
yield 'a';
yield 'b';
yield 'c';
};
let values = [];
for (const str of foo()) {
values.push(str);
}
console.log(values[0], values[1], values[2]);
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const [a, b, ...values] = Array.from(foo());
console.log(a, b, values.toString());
let foo = (function* () {
yield 'a';
yield 'b';
yield 'c';
})();
console.log(foo.next().value, foo.next().value, foo.next().value);
关于javascript - 解构数组如何与生成器函数一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44008210/