19.生成器函数实例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 异步编程
      // 练习:1s后控制台打印1,然后2s后打印2,然后3s后打印3,一共需要6s
      // 回调地狱!
      // setTimeout(() => {
      //   console.log(111);
      //   setTimeout(() => {
      //     console.log(222);
      //     setTimeout(() => {
      //       console.log(333);
      //     }, 3000);
      //   }, 2000);
      // }, 1000);

      function one() {
        setTimeout(() => {
          console.log(111);
          inerator.next();
        }, 1000);
      }

      function two() {
        setTimeout(() => {
          console.log(222);
          inerator.next();
        }, 2000);
      }

      function three() {
        setTimeout(() => {
          console.log(333);
          inerator.next(); //这个貌似不用写也能出结果,但是可能后续需要传递参数,所以还是得写
        }, 3000);
      }

      function* gen() {
        yield one();
        yield two();
        yield three();
      }

      // 调用生成器函数
      let inerator = gen();
      inerator.next();
    </script>
  </body>
</html>
posted @ 2022-01-02 16:16  问某完红  阅读(6)  评论(0编辑  收藏  举报