Promise
Promise 是 NodeJS 社区中诞生的产物
Promise 是一个对象,用来传递异步操作的消息。它表示某个未来才会知道结果的事件(通常是异步操作)
- 新建 Promise 对象时传入两个参数 resolve 和 reject
- Promise 提供 then 方法加载回调函数
- catch 方法捕获执行过程中抛出的错误
var p = new Promise((resolve, reject) => {
window.setTimeout(() => {
resolve(123);
}, 1000);
});
p.then((data) => {
console.log("p success", data);
});
//=> p success 123
Promise 算是一种控制反转
- 原来需要给异步函数传入一个回调函数
- 现在变成异步函数返回一个 Promise 对象
Promise 就是实现这种反转的工具
缺点:回调链冗长
相关 API
Promise 构造函数
Promise (excutor) {}
excutor 会在 Promise 内部立即同步回调,异步操作在执行器中执行
- excutor 函数:执行器
(resovel,reject) => {}
- resolve 函数:成功时调用的函数
value => {}
- reject 函数:失败时调用的函数
reason => {}
Promise.prototype.then 方法
(onResolved,onRejected) => {}
成功或者失败的回调,返回一个新 Promis 对象
- onResolved 函数:成功回调函数
(value) => {}
- onRejected 函数:失败的回调函数
reason => {}
Promise.prototype.catch 方法
(onRejected) => {}
失败的回调函数
- 语法糖,相当于
then(undefined,onRejected)
Promise.resolve 方法
(value) => {}
返回一个成功/失败的 promise 对象
Promise.reject 方法
(reason) => {}
返回一个失败的 promise 对象
Promise.all 方法
(promises) => {}
promises:包含 n 个 promise 的数组,返回一个新的 promise, 只有所有的 promise 都成功才成功, 只要有一个失败了就直接失败
Promise.race 方法
(promises) => {}
promises:包含 n 个 promise 的数组,第一个完成的 promise 的结果状态就是最终的结果状态
.
-
抛出异常
- 则状态变为 rejeted
-
中断 Promise 链
-
在回调中返回一个 Pendding 状态的 Primise
-
参见