async和 await

async和 await

总结一句话,async 内部的await同步进行,但是async外部是异步的。

一个例子即可解释

// 1s 之后返回2倍的值
function timeout (num) {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(num * 2)
        }, 1000)
      })
    }


async function testResult() {
    let x = await timeout(1);//x=2
    let x1 = await timeout(x); //x1 = 4
    let x2 = await timeout(x1); // x2 = 8
    console.log(x + x1 + x2);
}
testResult()
console.log('我先执行!!!')

输出:我先执行!!!
     14
1.**async 是一个通过异步执行并隐式返回 Promise 作为结果的函数** ,如果async函数中有返回值,当调用该函数时,内部会调用Promise.resolve()方法把它转化成一个promise对象作为返回,但如果timeout函数内部抛出错误就会调用Promise.reject() 返回一个promise 对象。

2/async作为一个关键字放在函数前面,表示该函数是一个异步函数,异步函数意味着该函数的执行不会阻塞后面代码的执行;而 await 用于等待一个异步方法执行完成;
3.await 等待一个 Promise 对象,如果 Promise的状态变成了 resolve 或者 rejcet,那么 async函数会恢复执行。或者阻塞该函数内后面的代码。

4.当遇到 `await` 时,**会阻塞函数内部处于它后面的代码(而非整段代码)**,去执行该函数外部的同步代码;当外部的同步代码执行完毕,再回到该函数执行剩余的代码。**并且当 `await` 执行完毕之后,会优先处理函数内部的代码。**
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值