setTimeout Promise async/await 区别
setTimeout
宏任务
小于 4ms,无效
Promise
微任务
async/await
微任务
async/await 本质上还是基于 Promise 的一些封装,而 Promise 是属于微任务的一种,所以在使用 await 关键字与 Promise.then 效果类似,可以理解为,await 以前的代码,相当于与 new Promise 的同步代码,await 以后的代码相当于 Promise.then 的异步。
setTimeout(() => console.log(4)) async function test() { console.log(1) await Promise.resolve() console.log(3) } test() console.log(2) // 结果: 1 2 3 4
async 函数返回一个 Promise 对象,当函数执行的时候,一旦遇到 await 就会先返回,等到触发的异步操作完成,再执行函数体内后面的语句。可以理解为,是让出了线程,跳出了 async 函数体。
await 的含义为等待,也就是 async 函数需要等待 await 后的函数执行完成并且有了返回结果(Promise 对象)之后,才能继续执行下面的代码。await 通过返回一个 Promise 对象来实现同步的效果。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论