请问老师几个问题

来源:7-1 异步迭代:for await of

hy_wang

2020-08-17

老师我想请问一下,为什么我打印Symbol.asyncIterator是undefined
以及请问下老师我其实代码中并没有实现它的asyncIterator这个方法,为什么还是支持for await of?

let promise1 = new Promise((res) => {
          setTimeout(() => {
              res(1)
          }, 1000);
      })
      let promise2 = new Promise((res) => {
          setTimeout(() => {
              res(2)
          }, 2000);
      })
      const asyncList = [ promise1,promise2 ]
      console.log(asyncList[Symbol.asyncIterator],'iterator')
      for(let i of asyncList) {
          console.log(i,'iiii')
      }
      (async function () {
          for await(let i of asyncList) {
              console.log(i,'async i')
              console.log("ater async i")
          }
      })()
     
  打印结果
  为什么iterator是undefined?
  以及我没有实现[Symbol.asynciterator]为什么数组还是可以实现异步迭代,请问老师哪些对象内置了实现以及什么情况下需要我们自己实现?

图片描述

写回答

1回答

谢成

2020-08-18

1、因为并没有实现Symbol.asyncIterator,所以是undefined

2、红色框中的代码:

//img.mukewang.com/szimg/5f3b339c09b7617514720614.jpg

这个例子在7-1这节课演示过,这时异步操作还没有执行完,所以输出的promise对象状态是pending

3、可以参考下mdn文档: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for-await...of

//img1.sycdn.imooc.com/szimg/5f3b34f609ed1e7f14940326.jpg


0
1
hy_wang
老师请问也就是说如果我在Map Set Array调用for await of的时候,会自动生成对应的asyncItertaot吗
2020-08-18
共1条回复

JavaScript ES(6-11)全版本语法 前端都需要的基础课

前端无门槛学习,从ES6到ES11,一套课程掌握JS最新语法

1328 学习 · 296 问题

查看课程