async 与 await的原理
-
async 默认返回的就是一个Promise对象
async function a() { console.log('a') return 'aaaaa' } console.log(a()) // Promise {<fulfilled>: "aaaaa"}
-
await的原理(用promise的then方法还原)
const p = new Promise((resolve, reject) => { setTimeout(() => { resolve(1) }, 2000) }) async function fun(){ const result = await p console.log(result) console.log('fun执行') } fun() // 执行后等待两秒依次输出 1, fun执行
await其实就是简化了promise的then写法,这样的执行看起来似乎有点难以理解,但是了解then执行机制的朋友看到还原后的代码就很明了了。
还原代码
const p = new Promise((resolve, reject) => { setTimeout(() => { resolve(1) }, 2000) }) p.then( value => { console.log(value) console.log('fun执行') } )
总结
await要等到状态改变后才会执行await语句之后的代码