写一个promise.all
时间: 2023-06-28 15:13:21 浏览: 81
像Promise.all(array)一样,但是带有一个对象而不是一个数组。-JavaScript开发
Promise.all 是一个方法,接收一个 Promise 数组作为参数,返回一个新的 Promise 对象。当所有 Promise 都成功时,返回的 Promise 对象才会成功,返回值是所有 Promise 对象的 resolve 结果数组;当有任意一个 Promise 失败时,返回的 Promise 对象就会失败,返回值是第一个失败的 Promise 的 reject 结果。
下面是一个简单的 Promise.all 实现:
```javascript
function promiseAll(promises) {
return new Promise((resolve, reject) => {
let results = [];
let count = 0;
if (promises.length === 0) {
resolve(results);
return;
}
for (let i = 0; i < promises.length; i++) {
promises[i].then(result => {
results[i] = result;
count++;
if (count === promises.length) {
resolve(results);
}
}).catch(error => {
reject(error);
});
}
});
}
```
使用方法:
```javascript
const promises = [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)];
promiseAll(promises)
.then(results => {
console.log(results); // [1, 2, 3]
})
.catch(error => {
console.error(error);
});
```
阅读全文