Promise
一旦状态凝固就不能再被修改
promise 有三种状态 pending、fulfill、reject
只有对象内部的操作决定 promise 的结果,状态只能从 pending 到 fulfill 或 pending 到reject,且状态不可逆
Promise.resolve()、Promise.reject() 返回一个状态凝固的promise对象
Promise.then().catch().finally()
Promise.then() 内部有两个回调函数,返回成功和失败结果回调
Promise.catch() 返回失败结果回调
Promise.finally() 最终状态结果回调
Promose.race() 括号内存放包含多个 promise 对象的数组,该方法会返回数组内最先完成对象的结果,可以用其实现判断请求超时
Promise.all() 括号内存放包含多个 promise 对象的数组,该方法会返回 promise 对象们的成功结果或者只返回第一个失败的结果
Promise.allsettled() 存放 promise 数组,返回 promise 对象们的结果,无论成功或者失败
Promise 手写?
Promisify函数
回调函数的 Promise 化改造
function promisify(f) {
return function () {
let args = Array.prototype.slice.call(arguments);
return new Promise((resolve, reject) => {
args.push((err, res) => {
if(err) {
reject(err)
} else {
resolve(res)
}
});
f.apply(null, args)
});
}
}