Promise 基本用法

创建 Promise

var promise = new Promise(function(resolve, reject){
  // do something async
  if(/* everything ok */){
    resolve("OK"); // it will return Promise.resolve("OK"), and the downstream will get "OK" as params
  } else {
    reject(Error("Error")); // it will return Error("Error") and the downstream will get Error("Error") as params
  }
})
`</pre>

Promise 构造器接受一个函数作为参数, 传入两个回调函数resolve 和 reject, 在这个函数参数中做一些一步操作, 成功后调用 resolve 将 Promise 对象的状态设置为 resolved 并返回一个 Promise 对象用于链式调用, 失败后调用 reject 将 Promise 对象的状态设置为 rejected 并返回一个 Promise 对象用于链式调用

使用时:

<pre>`promise.then(function(result){}).catch(function(err){})

Promise API Reference

静态方法:

  • Promise.resolve(promise), 返回一个 Promise

  • Promise.resolve(thenable), 从 thenable 对象创建一个新的 Promise, 一个 thenable (类 Promise) 对象是一个带有” then” 方法的对象.

  • Promise.resolve(obj), 创建一个以 obj 为肯定结果的 Promise

  • Promise.reject(obj), 创建一个以 obj 为否定结果的 Promise, 为了一致性和调试方便, obj 应该是一个 Error 实例对象.

  • Promise.all(array), 创建一个 Promise, 当且仅当数组中的所有 Promise 都 resolved 之后才设为 resolved, 若其中存在 rejected, 则设置状态为 rejected

  • Promise.race(array), 创建一个 Promise, 当数组首先出现 resovled 或 rejected 的时候设置为同状态