Node.js生成器,迭代器以及异步操作

1.简易迭代器样板

 1 function makeIterator(arr) {
 2   let nextIndex = 0;
 3   return {
 4     next: () => {
 5       if (nextIndex < arr.length) {
 6         return { value: arr[nextIndex++], done: false };
 7       } else {
 8         return { done: true };
 9       }
10     }
11   };
12 }
13 
14 const it = makeIterator(["吃饭", "睡觉", "打豆豆"]);
15 
16 console.log("首先", it.next().value);
17 console.log("其次", it.next().value);
18 console.log("再次", it.next().value);
19 console.log("然后", it.next().value);
20 console.log("最后", it.next().value);

2.生成器版本:

 1 function* makeIterator(arr) {
 2   for (let i = 0; i < arr.length; i++) {
 3     yield arr[i];
 4   }
 5 }
 6 const gen = makeIterator(["吃饭", "睡觉", "打豆豆"]);
 7 console.log("首先", gen.next());
 8 console.log("其次", gen.next());
 9 console.log("再次", gen.next());
10 console.log("然后", gen.next());
11 console.log("最后", gen.next());

生成器打印结果:

1 λ node server2.js
2 首先 { value: '吃饭', done: false }
3 其次 { value: '睡觉', done: false }
4 再次 { value: '打豆豆', done: false }
5 然后 { value: undefined, done: true }
6 最后 { value: undefined, done: true }
posted @ 2019-12-22 23:32  老郭蜀黍  阅读(312)  评论(0)    收藏  举报