javascript 中 async 和 await

async

async 是一个修饰符,async 定义的函数会默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数

  • 语法
    async function name([param[, param[, ... param]]]) { statements }

  • 参数
    name:函数名称;
    param:要传递给函数的参数;
    statements:函数体语句;

  • 返回值
    返回的Promise对象会运行执行(resolve)异步函数的返回结果,或者运行拒绝(reject)——如果异步函数抛出异常的话。

  • 描述
    一个async异步函数可以包含await指令,该指令会暂停异步函数的执行,并等待Promise执行,然后继续执行异步函数,并返回结果。

    记住,await 关键字只在异步函数内有效。如果你在异步函数外使用它,会抛出语法错误。
    注意,当异步函数暂停时,它调用的函数会继续执行(收到异步函数返回的隐式Promise)

  // 正常执行顺序 ---------------------------------
  
  function fun(str) {
    console.log(str);
  }
  fun(1)
  console.log(2)
  // 先打印  1      在打印  2
  
  
  // 异步函数 -----------------------------------------------
  
  async function asyncF(s) {
    return s
  }
  asyncF(1).then(res => {
    console.log(res);
  })
  console.log(2);
  // 先打印 2    在打印 1

await

例子



// -----

// async/await 版本 循环(forEach)中调用异步
async function processArray(array) {
    if(toString.call(array) != '[object Array]'){
        console.log(array)
        return
    }
    array.forEach(async (item) => {
        await processArray(item);
    })
    console.log('Done!');
}
processArray(['a', 'b', 'c'])

// 结果:像同步一样的预期结果
// a
// b
// c
// Done!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值