- async/await:是promise+Generator的“语法糖”
- async是对函数的修饰-> async function xx(){...}
- 让函数的返回值自动变为promise实例
- 函数执行报错,则返回状态是rejected,值是报错原因的实例
- 如果执行不报错,再看看返回值
- 返回值是新的实例,则以自己返回的promise实例为主
- 其它情况返回一个状态是fulfilled,值是返回值的实例
- 可以在函数中使用await
- await可以监听promise实例的状态,从而决定去做啥事 -> let xxx await [promise实例]
- 必须是出现在一个函数中,并且是经过async修饰的函数
- await后面需要跟一个promise实例「如果不是promise实例,浏览器也会把其变为promise实例」
- await 14;=>await Promise.resole(14);
- await会“等待”后面实例的状态为“成功”时,再把当前上下文中 ,await下面的代码执行!xxx就是实例状态
- 为成功返回的结果!
- 如果await后面的实例状态是失败,则下面代码不会执行(控制台爆红,但是不影响其它代码执行)
- 我们是基于try/catch实现await后面实例为失败态的处理,避免爆红
const fn = async ()=> {
return Promise.resolve(100);
}
console.log(fn());
const query = () => {
return new Promise((resolve, reject)=> {
setTimeout(()=> {
resolve(100)
},2000)
})
}
(async function (params) {
try {
let reault = await query();
console.log('请求成功',reault);
} catch (reason) {
console.log('请求失败:',reason)
}
})()
