ES6中async与await

async

async函数是异步的一种方案,可以让异步的操作同步执行

在函数前加上关键字async 表示该函数是一个async 函数

async函数返回一个 Promise 对象,可以使用then方法添加回调函数

const fn1 = async () => {
  return 1111
};
let result = fn1()
console.log(result)//打印出来是一个Promise对象

result.then(res=>{
   console.log(res)  //输出 1111
})

当 async 函数没有返回值时,返回 Promise.resolve(undefined)

await

await只能放在async函数内部使用

await 用于一个异步操作之前,表示要“等待”这个异步操作的返回值

const fn1 = async () => {
  return 1111
};

const fn2 = async() => {
  await fn1()
  console.log(2222)
}

fn2()

//输出 1111  2222

await后面可以跟Promise,和其他类型的数据

当跟的是Promise时,值是执行成功的返回值。

如果是其他数据时,返回值是await 表达式的运算结果

async/await的并发调用

如果在函数中,多次使用await会使多个异步任务逐个执行,如果实际需求,异步函数直接不存在继发关系,这样会增加程序的执行时间,因此需要将它们同时触发,并发调用,提高效率

以下借鉴于阮一峰大神的es6入门

//第一种
async function fun(){
    let fooFun = fun1();
    let barFun = fun2();
    let foo = await fooFun;
    let bar = await barFun;
}

//第二种
let [foo,bar] = await Promise.all([fun1(),fun2()])

注意点

  • ​​​​await命令后面的Promise对象,运行结果可能是rejected,所以最好把await命令放在try...catch代码块中
  • await命令只能用在async函数之中,如果用在普通函数,就会报错任何一个await语句后面的
  • Promise 对象变为reject状态,那么整个async函数都会中断执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加油吧少年时代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值