async
函数介绍1.async
函数是异步的一种方案,可以让异步的操作同步执行。
async
函数基本形式1.声明形式:在函数前加上关键字async
表示该函数是一个async
函数
//声明式函数形式
async function fn(){
await ...
}
//函数表达式形式
const fn = async function(){ await ... }
//箭头函数形式
const fn = async ()=> { await ... }
2.async
函数还有个关键字await
在函数内部使用
await
命令1.await
有等待的意思,需等待后面的Promise
执行结束才会执行下一步。这里强调一下后面的Promise
,是因为假如后面直接跟的是一个计时器,那么计时器虽然是异步操作,但是不会等计时器回调函数执行才执行下一步。
2.await
后面可以跟Promise
,和其他类型的数据
(1)当跟的是Promise
时,值是执行成功的返回值。
async function fn(){
let a = await Promise.resolve(1) a=1
let b = await Promise.resolve(2) b=2
return a+b
}
fn().then(v=>v) v =3
(2)如果是其他数据时,返回值就是数据本身会返回的值,该啥值是啥值。
function k(){}
async function fn(){
let a = await k //a就是函数k
let b = await 1 //b=1
let c = await setTimeOut(...) //c是定时器的id数值
}
async
函数返回Promise
对象1.async
函数返回值是一个Promise
对象,可以使用.then
接受一个回调函数,和Promise
的所有操作
2.Promise
的状态改变的的几种情况
(1)当await
其中一个Promse
执行失败,那么接下来的await
不会继续执行,async
函数返回Promise
的状态变为失败,执行.catch
方法
(2)当执行到return
,下面的await
不会执行,return
的值就是.then
回调函数的参数
(3)当throw new Error
下面的状态不会执行,async
函数返回Promise
的状态变为失败,执行.catch
方法
(4)当所有的异步操作都能成功时,那么只有所有异步操作执行完后,async
函数返回Promise
的状态变为成功,返回值是return
的值