13.async函数(源自2017)
概念:真正意义上去解决异步回调的问题,同步流程表达异步操作
本质:Generator语法糖
语法:
async function foo(){
await 异步操作
await 异步操作
}
特点:
1.不需要像Generator去调用next方法,遇到await等待,当前异步操作完成就向下走
2.返回的总是Promise对象,可以用then方法进行下一步操作
3.async取代Generator函数的星号,await取代Generator的yield
4.语义更加明确,使用简单,暂时没有副作用及不良反应
//async基本使用
async function foo(){
return new Promise(resolve =>{
setTimeout(resolve,2000)
})
}
async function test(){
console.log('开始执行',new Date().toTimeString())
await foo()
console.log('执行完毕',new Date().toTimeString())
}
test()
对于函数
//async中await的返回值就是函数执行完的返回值
function test2(){
return 'xxx