- async函数会返回一个promise,并且promise对象的状态是resolved(成功的)
- 如果你没有在async函数中写return,那么Promise对象resolve的值就是是undefined
- 如果你写了return,那么return的值就会作为你成功的时候传入的值
- 如果你没有在async函数中写return,那么Promise对象resolve的值就是是undefined
- 如果asycn里的代码都是同步的,那么这个函数被调用就会同步执行
async function fn(){ console.log('a') } fn() console.log('b') //a //b
- async 代码块里的如果有await,且await所标记的异步函数有resolve结果,按照await的顺序执行;async代码块外,正常按照同步代码执行
function fn(){ return new Promise(resolve=>{ console.log(1) }) } async function f1(){ await fn() // 没有拿到resolve结果,所以不执行 console.log(2) } f1() console.log(3) //1 //3 —————————————————————————————————————————— // 首先执行f1(),内部第一句await fn (),因为await是从右向左的执行顺序 // 先执行fn(),打印1,然后遇到await,阻塞后面的console.log(2),先退出fn执行同步代码console.log(3),然后发现没有同步代码了,返回await,执行后续的console.log(2),所以结果为1 3 2 function fn(){ return new Promise(resolve=>{ console.log(1) resolve() }) } async function f1(){ await fn() console.log(2) } f1() console.log(3) //1 //3 //2