async、await和Promise对比
1. 先看看用 Promise 操作一个异步编程
// ES6 promise 方法 let p1 = new Promise((resolve, reject) => { setTimeout(() => { resolve('我是p1') }, 1000) }) let p2 = new Promise((resolve, reject) => { setTimeout(() => { resolve('我是p2') }, 200) }) let p3 = new Promise((resolve, reject) => { setTimeout(() => { resolve('我是p3') }, 200) }) // 想让p1完成后, 再执行P2, 再执行P3 p1.then(res => { console.log(res) p2.then(res => { console.log(res) p3.then(res => { console.log(res) }) }) }) /* 要么如下 p1.then(res => { console.log(res) return p2 }) .then(res => { console.log(res) return p3 }) .then(res => { console.log(res) }) */
2. 再看看用 async 和 await
// 使用 ES7 async await语法糖 let a1 = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve('我是a1') }, 2000) }) } let a2 = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve('我是a2') }, 40) }) } let a3 = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve('我是a3') }, 40) }) } // 想让a1完成后再执行a2再执行a3 // 看起来更优雅,像同步一样 async function asy() { await a1().then(res => { console.log(res) }) await a2().then(res => { console.log(res) }) await a3().then(res => { console.log(res) }) } asy()
3. 区别
自家看区别,谁更优雅!
本文来自博客园,作者:RHCHIK,转载请注明原文链接:https://www.cnblogs.com/suihung/p/16251744.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)