Promise.all
只要有一个reject就整体reject
Promise.all = function (list) {
const results = [];
let count = 0;
return new Promise((resolve, reject) => {
list.map((item, index) => {
item.then(
(result) => {
results[index] = result;
count += 1;
if (count >= list.length) {
resolve(results);
}
},
(reason) => reject(reason)
);
});
});
};
Promise.race
谁先完成就resolve或者reject谁
Promise.race = function (list) {
let arr = list.map((item) =>
item instanceof Promise ? item : Promise.resolve(item)
);
return new Promise((resolve, reject) => {
for (let i = 0; i <= arr.length; i++) {
arr[i].then(
(data) => resolve(data),
(error) => reject(error)
);
}
});
};