async/await

1.使用async关键字可以让函数具有异步特征,但总体上其代码仍然是同步求值的

    async function foo(){
      console.log(1)
    }

    foo();
    console.log(2);
    //1
    //2

2.异步函数如果使用return 关键字返回了值(如果没有return会返回undefined),这个值会被Promise.resolve()包装成一个期约对象。在这个函数外部可以得到它返回的期约

   async function foo(){
     console.log(1)
     return 3;
   }
   // 给返回的期约添加一个解决处理程序
   foo().then(console.log);
   console.log(2);
   // 1
   // 2
   // 3

   // 直接返回一个期约对象也是一样的
   async function foo(){
     console.log(1);
     return Promise.resolve(3)
   }
   // 给返回的期约添加一个解决处理程序
   foo().then(console.log);
   console.log(2);
   // 1
   // 2
   // 3

3.使用await关键字之后的区别其实比看上去的还是微妙一些,比如下面的例子

   async function foo(){
     console.log(await Promise.resolve('foo'))
   }
   async function bar(){
     console.log(await 'bar')
   }
   async function baz(){
     console.log('baz')
   }
   // baz 
   // bar
   // foo

4.async/await中真正起作用的是await。async关键字,无论从哪个方面来看,都不过是一个标识符。毕竟,异步函数如果不包含await关键字,其执行的顺序和普通函数没有什么区别

    async function foo(){
     console.log('2')
   }
   console.log('1')
   foo();
   console.log('3')
   // 1
   // 2
   // 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值