Yas*_*obi 6 javascript iterator generator ecmascript-6
我将如何为生成器实现hasNext()方法。我尝试了许多选项,例如将生成器添加为return语句并从闭包中屈服。获取第一个值将其打印出来,然后使用while等,但是它们都没有实际起作用。
我知道我可以使用诸如of或while之类的如何循环来自generator的JavaScript迭代器? 但仍然想知道是否可以添加hasNext()。
function *range(start,end){
while(start < end){
yield start;
start++
}
}
let iterator = range(1,10);
// so I can do something like this.
while(iterator.hasNext()){
console.log(iterator.next().value);
}
Run Code Online (Sandbox Code Playgroud)
for…of循环迭代器的简单非方法是
for (let iterator = range(1, 10), r; !(r = iterator.next()).done; ) {
console.log(r.value);
}
Run Code Online (Sandbox Code Playgroud)
如果您确实想使用hasNext,也可以这样做,但这有点奇怪:
const iterator = range(1, 10);
iterator.hasNext = function hasNext() {
const r = this.next();
this.current = r.value;
return !r.done;
};
while (iterator.hasNext()) {
console.log(iterator.current);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8869 次 |
| 最近记录: |