Promise

promise 是异步编程的一种解决方案,简单来说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个一步操作)的结果。从语法上来说,Promise是一个对象,从他可以获取异步操作的消息。Promise提供统一的api,各种异步操作都可以用相同的方法进行处理。

promise对象有以下两个特点

(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:

  • pending 进行中
  • fulfilled 已成功
  • rejected 已失败

(2)一旦状态改变,就不可以再变。

缺点

  • 无法取消Promise,一旦新建立就会执行,无法中途取消。
  • 如果不设置回调函数,内部抛出的错误不会反应到外部。
  • 处于pending时,无法得知目前进行到了哪个状态。

async/await

从字面意义理解 async是"异步"的简写 ,await可以认为是async wait的简写。因此 async是用域申明一个函数是异步的,await用于等待一个异步方法执行完成。

async起什么作用

async 返回一个promise对象,promise的特点是无等待,不使用await情况下与直接返回promise没有什么区别

await在等什么

根据语法说明,await等待的是一个表达式,这个表达式的计算结果可以为promise对象或其他对象。

等到之后呢

await等到了要等的东西之后,非promise对象则返回,promise对象则阻塞后面的代码,等着promise对象resolve,然后得到resolve的值,作为其运算结果。