对于await阻塞的理解

1.用async修饰的函数是一个异步函数        

代码:

 async function fn() {}
    console.log(fn());

视图;

 如果什么都不返回则返回一个成功的状态,相当于:

 return Promise.resolve('underfined')

2.await阻塞问题

  async function fn1() {
      const res = await fn();
      console.log(res);
      console.log(1);
    }

    async function fn() {
      // return Promise.resolve("underfined");
    }
    fn1();

分析上方的代码:

fn 是被async修饰的函数,是一个异步函数。

fn1里面通过async修饰,通过await调用。

错误的答案:

先输出1   underfined

我们转换下代码:

   fn().then((res) => {
        console.log(res);
        console.log(1);
      });

正确的答案:

 

3.怎么理解阻塞这个概念呢?

我们通过上述的代码我们表面上认为:

 通过转换:

我们发现 :

   fn().then((res) => {
        console.log(res);
        console.log(1);
      });

是用then包起来的,表面上是同步实则是异步

我们也总结条规律:

   async function fn1() {
        await fn()
        console.log(1);
        await fn2()
        console.log(2);
        await fn3()
        console.log(3);
    }

    async function fn() {
      // return Promise.resolve("underfined");
    }
    async function fn2() {
      // return Promise.resolve("underfined");
    }
    async function fn3() {
      // return Promise.resolve("underfined");
    }
    fn1();

先转换成then的形式:

      fn().then(() => {
        console.log(1);
      });

      fn2().then(() => {
        console.log(2);
      });
      fn3().then(() => {
        console.log(3);
      });

 

如:

 

总结:

await阻塞,要等到状态返回才执行下面的代码。表示上看是同步实则是异步的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值