为什么要用async/await
单纯地使用promise对象+then的形式顺序执行,代码使用起来并不优雅,需要一种更接近传统语法的形式 异步请求axios的API都是返回的promise对象
基本用法
async 关键字用于函数上(async函数的返回值是Promise实例对象所以要用then得到返回值) await 关键字用于async函数当中,接在promise对象前面可以得到reslove或者reject的结果
var sum= 0
function time ( num) {
return new Promise ( function ( resolve, reject) {
setTimeout ( function ( ) {
sum= sum+ num
resolve ( sum)
} , 1000 ) ;
} )
}
async function test ( ) {
var num1 = await time ( 2 )
var num2 = await time ( num1)
var num3 = await time ( num2)
console. log ( num3) ;
}
test ( )
可以看到通过await可以不用then直接的得到Promise对象resolve的结果 同时代码是从上往下执行更符合传统的语法更优雅 如果想要得到async函数return的结果
var sum= 0
function time ( num) {
return new Promise ( function ( resolve, reject) {
setTimeout ( function ( ) {
sum= sum+ num
resolve ( sum)
} , 1000 ) ;
} )
}
async function test ( ) {
var num1 = await time ( 2 )
var num2 = await time ( num1)
var num3 = await time ( num2)
return num3
}
console. log ( test ( ) ) ;
可以看到打印还是promise对象,所以要用then得到结果
test ( ) . then ( function ( res) {
console. log ( res) ;
} )
总结
async/await更像是promise对象的语法糖