请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问老师几个问题

老师我想请问一下,为什么我打印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回答

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

2、红色框中的代码:

https://img1.sycdn.imooc.com//szimg/5f3b339c09b7617514720614.jpg

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

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

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


0 回复 有任何疑惑可以回复我~
  • 提问者 hy_wang #1
    老师请问也就是说如果我在Map Set Array调用for await of的时候,会自动生成对应的asyncItertaot吗
    回复 有任何疑惑可以回复我~ 2020-08-18 10:03:14
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信