Promise 对象是 ECMAScript 6 中引入的一种新的特性,它代表了未来将要发生的事件,用于传递异步操作的消息,以及表示一个异步操作的最终完成(或失败)及其结果值。
具体来说,Promise 对象是一种具有异步操作的对象,它保存了一个未来才会结束的事件(通常是一个异步操作)的结果。Promise对象有两个主要的特点。
首先,Promise 对象的状态不受外界影响。Promise 对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成)和Rejected(已失败)。只有异步操作的结果可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是 Promise 这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。
其次,一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变只有两种可能:从 Pending 变为 Resolved;从 Pending 变为Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。
使用 Promise 对象,可以避免层层嵌套的回调函数,把异步操作以同步操作的流程表达出来,使得控制异步操作更加容易。也就是说,使用 Promise,我们可以在等待异步操作完成的过程中做其他事情,而不是阻塞主线程。此外,Promise 对象还提供了统一的接口,使得控制异步操作更加容易。