可以理解 await 后面的语句相当于放到了 new Promise 中,下一行及之后的语句相当于放在 Promise.then 中
async/awiat 的使用规则:
但注意,await 所等待的 promise 对象,他的最终状态一定是 resolve 的(当然也可以不是 resolve ,只不过不会执行后面的代码罢了),否则不会执行await 后面的代码,也就是不会去执行所谓的 then() ;
async function async1 () {console.log('async1 start');await new Promise(resolve => {console.log('promise1');})console.log('async1 success');return 'async1 end'
}
console.log('srcipt start')
async1().then(res => console.log(res))
console.log('srcipt end')/* await后面的promise状态不是resolve的输出结果
"srcipt start"
"async1 start"
"promise1"
"srcipt end"
*/
这里我们可以看到:在 async1 中 await 后面的 Promise 是没有返回值的,也就是它的状态始终是 pending 状态,所以在 await 之后的内容是不会执行的,包括 async1 后面的 .then。
async function async1 () {console.log('async1 start');await new Promise(resolve => {console.log('promise1');resolve()})console.log('async1 success');return 'async1 end'
}
console.log('srcipt start')
async1().then(res => console.log(res))
console.log('srcipt end')/*await后面的promise状态是resolve的输出结果
"srcipt start"
"async1 start"
"promise1"
"srcipt end"
"async1 success"
"async1 end"
*/
上一篇:JAVA简单排序
下一篇:svg的path标签的d属性