Promise对象
前言: 首先你必须要大概理解Promise对象,因为async + await就是为了解决不写链式的Promise而造的。
Promise是一个对象,用来装东西,但里面的值是不确定的。值根据状态而定。
Promise有三种状态:
- 待定(pending):初始状态,既没有被兑现,也没有被拒绝。
- 已兑现(fulfilled):意味着操作成功完成。返回操作成功的值(可以自定义)
- 已拒绝(rejected):意味着操作失败。返回操作失败的值(可以自定义)
【具体代码怎么操作的可以去看文档,这里只讲如何理解】
async + await
(async + await与操作系统的中断很像,不懂也没事)
async怎么理解:
- async 加在一个函数的前面,表示这个函数在执行的时候可以被打断。打断的意思就是函数执行到一半就停下来了,去执行程序的其他代码了。
那这个函数什么时候会被打断呢?而且被打断之后什么时候回来继续跑呢?
【答案就在await】
await怎么理解
-
await在后面跟一个Promise对象。前提是要在标记了async的函数里面使用。
-
await + Promise对象,表示在await所指Promise对象还没有值的时候,函数会被中断。等到Promise有值了之后,才会返回函数里面接着刚才被打断的地方继续跑。所以看起来就像是函数会一直在那等Promise返回值。
(前面讲到Promise对象在一开始并没有确定的值,只有当Promise对象被执行或被拒绝之后才有值)