在一段代码中同时出现promise和await,哪个先执行呢,不知道大家有没有考虑过?
下面看一段代码
const p=Promise.resolve();
(async ()=>{
await p;
console.log('after await')
})();
p.then(()=>{
console.log('tick:a')
}).then(()=>{
console.log('tick:b')
});
这段代码,在node v8版本重的执行结果是
after await
tick:a
tick:b
而在node v10之后的执行结果是
tick:a
tick:b
after await
第一种情况根据规范它并不正确,node10实现了正确的行为,即首先执行链式处理的程序,完后才继续使用异步函数。
具体的讲解可以看一下这篇文章: