Promise是es6新出的异步编程的一种解决方案,比传统的回调函数和事件更加强大。
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
Promise对象有三种状态:Pending(进行中)、Resolved(已完成)和Rejected(已失败)。
一旦状态改变,就不会再变。Promise对象的状态改变,只有两种可能:从Pending变为Resolved和从Pending变为Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。
Promise可以避免层层的callback嵌套。
基本用法如下:
|
|
Promise实例生成以后,可以用then方法分别指定Resolved状态和Reject状态的回调函数。
|
|
Promise.prototype.catch方法是.then(null, rejection)的别名,用于指定发生错误时的回调函数。
|
|
Promise.all方法接受一个数组作为参数,数组的每个元素都是Promise的实例,各个实例都是resolved,结果就是resolved,有一个是rejected,结果就是rejected。
Promise.resolve方法可以将现有对象转为Promise对象
|
|