async/await Promise 介绍和使用

async/await是什么

async/await 是ES7提出的基于Promise的解决异步的最终方案。至于什么时候用这个,我的理解是比如页面初始化时要展示的内容有几个接口里面的数据合成的,有的内容需要别的接口里面的字段来展示,但是有的接口已经请求完毕但是有的接口还没请求完就会造成页面展示内容缺失或报错。简单来说就是把异步执行 转成同步代码。

async

async是一个加在函数前的修饰符,被async定义的函数会默认返回一个Promise对象resolve的值。因此对async函数可以直接then,返回值就是then方法传入的函数。

await

await 也是一个修饰符,只能放在async定义的函数内。可以理解为等待

await 修饰的如果是Promise对象:可以获取Promise中返回的内容(resolve或reject的参数),且取到值后语句才会往下执行。

错误用法

 time() {

      setTimeout(() => {

        console.log("我先执行的");

      }, 3000);

    },

    setTime() {

      console.log("我等三秒再执行");

    },

    async fun() {

      await this.time();

      await this.setTime();

    },

我们看控制台打印的结果

先执行的是setTime这个函数,这样写async/await是不生效的。

await修饰的是Promise对象,可以获取Promise返回的内容,且取到里面的值后语句才会往下执行。

如果不是Promis对象,await对此表达式的类型没有影响。

其实在编辑器里就会有提示,await 不生效的话下面会有三个点,它不会报错。

正确的用法

 time() {

      return new Promise((resolve) => {

        setTimeout(() => {

          resolve("我先执行的");

        }, 3000);

      });

    },

    setTime() {

      return new Promise((resolve) => {

        resolve("我等三秒再执行");

      });

    },

    async fun() {

      let a = await this.time();

      let b = await this.setTime();

      console.log(a);

      console.log(b);

    },

 看打印结果

 

个人理解!😀

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值