初步了解async/await

用法:

可以写一些异步的代码

async/await特点:

1.async/await更加语义化,async 是“异步”的简写,async function 用于申明一个 function 是异步的; await,可以认为是async wait的简写, 用于等待一个异步方法执行完成;

2.async/await是一个用同步思维解决异步问题的方案(等结果出来之后,代码才会继续往下执行)

3.可以通过多层 async function 的同步写法代替传统的callback嵌套

async function语法

自动将常规函数转换成Promise,返回值也是一个Promise对象;

只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数;

异步函数内部可以使用await;

例子:

async function add(x){
     let a=1;
     return x+a;
}
console.log(add(10))

打印出来的结果:

 

await语法

await 放置在Promise调用之前,await 强制后面点代码等待,直到Promise对象resolve,得到resolve的值作为await表达式的运算结果;

await只能在async函数内部使用,用在普通函数里就会报错;

例子:

function pm(){
     return new Promise(function(resolve,reject){
          resolve('promise value:1')
     })
}
async function test(){
    let a=await pm();
    let b=await 'not promise value:2';
    console.log(a);
    console.log(b);
    return a+b;
}

运行结果为:

错误处理

在async函数里,无论是Promise reject的数据还是逻辑报错,都会被默默吞掉,所以最好把await放入try{}catch{}中,catch能够捕捉到Promise对象rejected的数据或者抛出的异常 

例子:

function timeout(ms) {

  return new Promise((resolve, reject) => {

    setTimeout(() => {reject('error')}, ms);  //reject模拟出错,返回error

  });

}

async function asyncPrint(ms) {

  try {

     console.log('start');

     await timeout(ms);  //这里返回了错误

     console.log('end');  //所以这句代码不会被执行了

  } catch(err) {

     console.log(err); //这里捕捉到错误error

  }

}

asyncPrint(1000);

大概就这些吧,以后get到再补充 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值