Generator和async await

2018-09-11  本文已影响13人  月肃生

   es6提供的这两玩意,看明白了,用着用着又糊涂了....
    下面就几个例子讲一下

示例1

async function a(){
    await setTimeout('console.log(1)', 1000)
    console.log(2)
}

输出结果

2
1

示例2

async function a(){
    await new Promise(resolve=>{
      setTimeout(()=>{
        console.log(1);
        resolve()
       }, 1000)
    })
    console.log(2)
}

输出结果

1
2

总结

    之前没仔细看文档,老感觉为啥promise的setTimeout能阻塞执行,而直接setTimeout不行。

    async是Generator的语法糖,进一步说,async函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而await命令就是内部then命令的语法糖。
    这么解释一下感觉就清晰多了。

上一篇 下一篇

猜你喜欢

热点阅读