简单概括核心理解的知识点
1. 定义
本质上式Promise的语法糖,asnyc是异步的缩写,await可以理解为等待。
async function testAsy(){
return 'hello world';
}
let result = testAsy();
console.log(result)
根据定义,通过asnyc声明的函数将return的结果通过Promise.resolve()将返回值转化为Promise对象。因此,当没有await语句执行async函数,它就会立即执行,返回一个Promise对象,非阻塞,与普通的Promise对象函数一致
-
awiat等待的一般是一个Promise对象,也可以是其他值
-
如果的等待Promise则返回Promise的处理结果,其他值则返回值本身
-
await会暂停当前async函数的执行,等待Promise进行处理
-
Promise(fulfillded),其将回调的resolve函数参数作为await表达式的值,继续执行async function
-
Promise(rejected),await表达式会把Promise异常原因抛出;另外如果await操作符后面的表达式不是一个Promise对象,则返回该值本身。
-
await接受的对应也可以是一个Promise类的thenable对象
-
class内部可以直接声明async函数
class Waiter { async wait() { return await Promise.resolve(1); } }
错误处理
async function f() {
throw new Error("Whoops!");
}
在await async函数中,可以使用以上方法抛出错误,效果与reject基本一致
async关键字的作用
- 用于修饰一个函数,保证函数的返回值一定是一个Promise类型的值
- 允许函数内部使用await关键字
await关键字的作用
1.让JS等待给定的Promise对象setteled,然后根据成功与否执行
- 如果有 error,就会抛出异常 —— 类似在对应位置调用了
throw error一样
- 成功则返回resolve对应的结果