认识和使用 Promise
Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及该异步操作的结果值。
1 | new Promise( function(resolve, reject) {...} /* executor */ ); |
Promise 构造函数执行时立即调用“处理器函数”(executor function), resolve 和 reject 两个函数作为参数传递给“处理器函数”。“处理器函数”内部通常会执行一些异步操作,一旦异步操作执行完毕(可能成功/失败),要么调用 resolve 函数来将 promise 状态改成 fulfilled,要么调用 reject 函数将 promise 的状态改为 rejected。如果在“处理器函数”中抛出一个错误,那么该 promise 状态为 rejected。
一个 Promise 有以下几种状态:
pending: 初始状态,既不是成功,也不是失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。settled: 处在fulfilled或rejected状态而不是pending状态。
因为 Promise.prototype.then 和 Promise.prototype.catch 方法返回 promise 对象, 所以它们可以被链式调用。