定义:
promise + generator 的语法糖,让promise对异步操作的管理更便捷
用法
async用来修饰一个函数
- 让函数返回的结果变为一个promise实例
- 在函数中可以使用await「最常见的目的」
举例:
-
返回一个promise 实例
` async function fn(){ return 10; } console.log(fn()) ` 此时的结果不再是10,而是一个promise 实例 状态:fulfilled 值为10
-
在函数中可以使用await
`(async function(){ let value = await query1(); console.log('第一次成功',value) value = await query2(); console.log('第二次成功',value) })()`
await使用的注意事项
-
let xxx = await ...;
-
await 后面跟着的是一个promise实例,如果不是,则会默认变为状态为成功,值是原来值的promise实例
-
await 100;-> await Promise.resolve(100);
-
在当前的私有上下文中,await下面的代码执行,需要等待await后面的promise实例为成功,才会执行!活生生的把异步操作模拟出来同步的效果
-
如果后面的promise实例是失败的,则下面的代码不会执行!
-
xxx接受到的是:实例为成功状态下,实例存储的那个值
-
函数中遇到await,首先会把“它下面代码执行”这个事(任务),放在webAPI中去监听...然后再去看其后面的promise实例是成功还是失败:至于实例状态为成功的时候,才会把之前监听的任务挪至到“异步的微任务队列中“排队中等着执行!!(await中的异步编程)
await异常处理
`(async function(){
try{
await Promise.reject('no')
}catch(err){
//失败干的事情,catch里面可以啥也不写,但是控制台就不会抛红了
}
})
`