【笔记】JS的异步
前言
JS的异步学习笔记
异步函数
定义异步函数
- 通过async关键字定义异步函数
1 | async function fn() {} |
通过变量接收异步函数
1 | const fn = async function () {}; |
通过箭头函数定义异步函数
1 | const fn = async () => {}; |
执行异步函数
- 异步函数中定义的代码和普通函数一样会直接执行,而不是返回生成器对象
1 | async function fn() {} |
异步函数的返回值
- 异步函数的返回值是一个Promise对象
1 | async function fn() { |
1 | function fn() { |
异步函数可以返回的值
返回普通值
1 | async function fn() { |
返回非thenable对象
1 | async function fn() { |
返回新Promise对象
1 | async function fn() { |
返回thenable对象
1 | async function fn() { |
await关键字
异步函数中使用
await关键字调用的函数,在执行时会等待函数调用产生结果才会继续向下执行await关键字可以修饰普通函数
1 | function getData(url) {} |
await关键字也可以修饰异步函数
1 | async function requestData(url) {} |
await关键字还可以修饰Promise对象
1 | async function fn() { |
类中定义异步方法
- 在类中通过
async定义的方法为异步方法
1 | class Cls { |
异步操作的实现方案
通过Promise实现异步
回调地狱(Callback Hell)
1 | function requestData(url) { |
链式调用
1 | function requestData(url) { |
通过生成器函数实现异步
1 | function requestData(url) { |
通过异步函数实现异步
- 异步函数的实质是生成器的语法糖
1 | function requestData(url) { |