JavaScript中的async和await

/*
    async / await
      + ES7的语法
        => ES6提出的方案,但是ES6实现的不是很好
        => 在 ES7的时候优化过
      + 目的:
        1. 回调地狱的终极解决办法
        2. 把异步代码写的看起来像同步代码
    语法:
    1. async书写在函数的前面,是对这个函数的修饰关键字
    2. await的使用,必须有 async 关键字,await才可以在函数内部使用
    3. await等待的必须是一个 promise 对象,才会有等待的结果,不然没有意义
    + 当你满足了以上三个条件以后,你的 promise 对象本该在 then 里面接收的结果
      => 就可以直接定义变量接收
      => 你的 promise 里面的异步代码没有结束之前
      => 不会继续向下执行
  */

  async function fn() {
    pAjax({ url: './server/a.php', dataType: 'json' })
      .then(res => {
        console.log(res);
      })
    console.log('后续代码');
  }
  fn()
  // 这段代码是 先打印 res的结果,然后再打印 '后续代码'

  async function fn() {
    const res = await pAjax({ url: './server/a.php', dataType: 'json' })
    console.log(res);
    console.log('后续代码');
  }
  fn()
  // 这段代码先等待异步操作的结果完成后 再执行后续的代码
  // 所以打印结果为: 先 res 后 '后续代码'


  console.log('start');
  fn()
  console.log('end');

  // 此时的fn函数是异步的,只是fn函数内部的逻辑处理成为了同步代码
  // 所以会打印:
  // start
  // end
  // res
  // 后续代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值