异步编程的解决方案:1,生成器函数 2,promise ,3,async和await
async 函数是什么?一句话,它就是 Generator 函数的语法糖。
Async/Await就是一个自执行的generate函数。利用generate函数的特性把异步的代码写成“同步”的形式
async函数的特点:
1. await只能放到async函数中
2. 相比genrator语义化更强
3. await后面可以是promise对象,也可以数字、字符串、布尔,,一般为promise对象
4. async函数返回是一个promise对象,,await返回的是promise成功地返回值
5. 只要await语句后面Promise状态变成 reject, 那么整个async函数会中断执行,(可以通过try...catch捕获处理一下)
async function f1(){
return "aaa"
// 只要你返回的结果不是一个 Promise类型的对象 , 这个函数的返回结果就是一个成功的promise fulfilled
throw new Error("出错啦!");
// 抛出错误,返回的结果是一个失败的promise
return new Promise((resolve,reject)=>{
resolve(...)
reject(...)
})
返回的promise成功,那f1就成功;返回的promise失败,那f1就失败
};
const result = f1();
console.log(result)
如何解决async函数中抛出错误,不影响后续执行
1:try{
}catch(e){
}
2.promise本身的catch
await 命令
正常情况下,await
命令后面是一个 Promise 对象,返回该对象的结果。如果不是 Promise 对象,就直接返回对应的值。