async/await为什么是异步操作呢?
同步不应该是执行这一段才往下执行
await是等待的意思,等待后面执行完成再执行下一段
那这不应该是同步么?我看很多技术文章都说async/await是异步操作
why~~有点不理解
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
同步不应该是执行这一段才往下执行
await是等待的意思,等待后面执行完成再执行下一段
那这不应该是同步么?我看很多技术文章都说async/await是异步操作
why~~有点不理解
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
打印顺序会是
Promise<>
、2
、1
,这说明只有console.log(1)
会因等待await 1
而延期,外面的console.log(2)
则是直接执行的,如果是同步的话理应先 1 后 2。奥秘就在
asyncFunc
自动返回的这个Promise
里:被迫“延期执行”的代码其实被装进了这个Promise
的resolver
里了,而Promise
的resolver
会被添加到微任务队列……只是在当前
async
函数体内,将异步
操做模拟成了同步
操做,并不影响与它并行的代码的执行。实际上await
还是一个回调函数
的语法糖
async/await
其实就是把await
之后的函数变成了一个promise
,只不过是把promise
的链式调用写法改成了看起来像同步的写法,就不需要每次都.then
一直点下去了,增加可读性。其实就是
Generator
+Promise
的语法糖。来看:理解 JavaScript 的 async/await