认识和使用 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
对象, 所以它们可以被链式调用。