关键知识点
- 异步操作成功时,Promise会将成功的结果作为参数传递给then方法的第一个回调函数
- 异步操作失败时,Promise会将报错的信息作为参数传递给then方法的第二个回调函数
- Promise.all的状态改变有两种方式
- 第一种是
const p = Promise([p1,p2,p3])中的p1,p2,p3的状态都变成fufilled
- 第二种是
const p = Promise([p1,p2,p3])中第一个变成rejected
Promise.myAll = function (promiseArr) {
const results = [];
let count = 0;
return new Promise((resolve, reject) => {
promiseArr.map((promiseItem, index) => {
promiseItem.then(
(result) => {
results[index] = result;
count += 1;
if (count === promiseArr.length) {
resolve(results);
}
},
(rejectErr) => {
reject(rejectErr);
}
);
});
});
};
p1 = Promise.resolve();
p2 = Promise.resolve();
p3 = Promise.reject();
Promise.myAll([p3]);