991

1、不断调用generator对象的next()方法,执行generator代码,然后,每次遇到yieldx;返回一个对象,然后暂停。

varf=fib(5);
f.next();//{value:0,done:false
f.next();//{value:1,done:false
f.next();//{value:1,done:false
f.next();//{value:2,done:false
f.next();//{value:3,done:false
f.next();//{value:undefined,done:true

2、直接用for...of循环迭代generator对象,不需要自己判断done。

function*fib(max){
vart,
a=0,b=1,n=0;
while(n<max){
yielda;
[a,b]=[b,a+b];
n++;

return;

for(varxoffib(10)){
console.log(x);//依次输出0,1,1,2,3,...
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。