Promise函数

91 阅读1分钟

Promise可以说是一个容器,里面放着未来才会结束的事件(通常是异步操作)的结果。 异步操作有定时器、ajax、事件绑定、回调函数等。

Promise对象不受外界影响,Promise对象代表着一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果可以决定当前的状态,任何其他操作都无法改变这个状态。一旦状态改变,就不会改变,任何时候都可以得到这个结果。

下面创造一个Promise对象实例:

image.png Promise对象创建好会立即执行:

image.png

下面代码中,先输出2,再输出3,是因为Promise是立即执行函数,而最后输出1而不是2, 是因为resolve的Promise对象是在本轮事件循环的末尾执行,总是晚于本轮事件循环的同步任务。

image.png 一般来说,调用resolvereject方法后,Promise的使命就完成了,后续方法应该放在then方法里面。这时加上return,后面的方法就不回执行。

image.png

当Promise抛出异常错误时,可以用且最好用catch方法,而不要用then方法的第二个参数获取错误。

image.png