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

Posted guoyinsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

以上是关于Node.js生成器,迭代器以及异步操作的主要内容,如果未能解决你的问题,请参考以下文章

用于组合异步迭代器的映射、过滤器和迭代工具

Node.js 异步数组迭代

Node.js 同步循环或迭代异步语句

异步生成器不是迭代器?

迭代器,生成器(generator)和Promise的“微妙”关系

10.迭代器/生成器/协程函数/列表生成器