【什么是Promise对象,async+await】--- 无废话,大白话理解

67 阅读1分钟

Promise对象

前言: 首先你必须要大概理解Promise对象,因为async + await就是为了解决不写链式的Promise而造的。

Promise是一个对象,用来装东西,但里面的值是不确定的。值根据状态而定。

Promise有三种状态:

  1. 待定(pending):初始状态,既没有被兑现,也没有被拒绝。
  2. 已兑现(fulfilled):意味着操作成功完成。返回操作成功的值(可以自定义)
  3. 已拒绝(rejected):意味着操作失败。返回操作失败的值(可以自定义) image.png

【具体代码怎么操作的可以去看文档,这里只讲如何理解】

async + await

(async + await与操作系统的中断很像,不懂也没事)

async怎么理解:

  • async 加在一个函数的前面,表示这个函数在执行的时候可以被打断。打断的意思就是函数执行到一半就停下来了,去执行程序的其他代码了。

那这个函数什么时候会被打断呢?而且被打断之后什么时候回来继续跑呢?

【答案就在await】

await怎么理解

  • await在后面跟一个Promise对象。前提是要在标记了async的函数里面使用。

  • await + Promise对象,表示在await所指Promise对象还没有值的时候,函数会被中断。等到Promise有值了之后,才会返回函数里面接着刚才被打断的地方继续跑。所以看起来就像是函数会一直在那等Promise返回值。

    (前面讲到Promise对象在一开始并没有确定的值,只有当Promise对象被执行或被拒绝之后才有值)

最后给个例子自己去体会。

image.png