async和await

一:解释

async和await是ES7出现关键字,目的是彻底解决回调地狱,比Promise彻底。即就是:把异步的回调变成了同步的写法。async和await是回调地狱的终极解决方案。

  async:异步

  await:等待

二、 async定义函数的格式

​ async function 函数名()
​    {
​        try{
      let res = await 异步操作 (使用Promise) ;//res: 就是Promise里面resolve函数的参数
​            console.lor(res);
​        }catch(err){
​                err:就是Promise里面reject函数的参数
​        }
​          await 异步操作 (使用Promise) 
​    }

返回值:Promise对象;

功能:将异步操作按同步操作的方式书写,即上一步未执行完,会阻塞当前函数的进程,不影响主线程

知识点:

  1)、async:修饰的函数表示函数里面有异步操作,返回值是Promise对象

  2)、await:

  2.1)、一般await后跟 promise对象,或者返回Promise对象的函数;

  2.2)、await 修饰函数后,那么,返回值变成了Promise对象中resolve的参数;

如 Let res = await fn(); //res是函数fn返回的Promise对象里的resolve的参数。

  2.3)、如果要拿到reject里参数,就使用try catch。

如:

  try{

    Let res = await fn(); //res是 fn函数里Promise的resolve的参数

  }catch(err){

    err 是 fn函数里Promise的reject的参数

  }

三、使用async和await:

1、只使用async关键字

 使用async修饰函数,函数的返回值是Promise对象。函数本身的返回值,会作为resolve的参数;

async function f2(){
​    return "hello f2";  //return后面的字符串会作为 resolve函数的参数。
}

2、使用async和await结合(获取resolve里的值)

  1)、 await只能写在async修饰的函数里。

  2)、await是等待的意思,await修饰的代码会等待。在函数里,碰到await修饰的代码时,await朝后的代码都会等待。 等到函数外面的代码执行完毕后,再执行await里的代码。

  3)、一般来说:await后面接一个Proimse对象,或者返回Promise对象的函数。

  await 修饰函数后,那么,返回值变成了Promise对象中resolve的参数

3、使用async和await结合(获取reject里的值)

使用try catch

  try{

    若干句代码;这些代码里,只要碰到错误,就会跳到catch里。即就是:碰到错误后,try里处于错误行后面的代码不再执行。

  }catch(){

    出错,

  }

如:

  try{

    let res1 = await ajax();

    res1就是 resolve的参数

    let res2 = await ajax();

    res2就是 resolve的参数

  }catch(err){

    err:如果说第一次ajax请求失败,那么err就是第一次ajax请求里reject的参数;

    如果说第二次ajax请求失败,那么err就是第二次ajax请求里reject的参数

  }

posted @ 2023-03-10 11:03  猛踢瘸子那条好腿喽  阅读(281)  评论(0编辑  收藏  举报