2 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以使用,while(!next.done)并且next()每個(gè)迭代只想使用一次。
要弄清它是否是最后一個(gè)值,請將值存儲(chǔ)在變量中,然后重新分配next,然后done在處理值之前檢查
function* myGen(arr) {
let i = -1;
while (++i < arr.length) {
yield arr[i] * 2;
}
}
const it = myGen([1, 2, 3]);
let next = it.next();
while (!next.done) {
const val = next.value;
next = it.next();
console.log('value:', val, ' is last = ', next.done);
}
console.log('done:', next.done)

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
從Mozilla的Doc中:
“ ... next()方法,該方法返回具有兩個(gè)屬性的對(duì)象:value,序列中的下一個(gè)值;完成,如果序列中的最后一個(gè)值已被消耗,則為true。 ”
您的方法沒有錯(cuò)。
添加回答
舉報(bào)