这个问题在这里已有答案:
promisesettle必须返回Promise
,当input
中的所有承诺都已解决时(意味着,要么已经解决,要么被拒绝)。
履行值将是一个对象数组,每个对象具有以下签名:
function promiseSettle(input) {
let promiseArray = [];
for (let i = 0; i < input.length; i++) {
Promise.resolve(input[i]).then(output => {
promiseArray.push(output);
console.log(promiseArray);
}, reason => {
promiseArray.push(reason);
})
}
}
// testing data
var p1 = new Promise((resolve, reject) => {
setTimeout(reject, 1, "first promise of 1 sec");
});
var p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 1, "second promise of 2 sec");
})
var p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 1, "rejected promise");
})
promiseSettle([p1, p2, p3])
有人可以帮忙吗?我不确定如何使用预期参数返回promise。
这应该做到这一点。
function promiseSettle(inputList) {
let promiseArray = inputList.map(
input => {
return new Promise((resolve, reject) => {
input.then(
value => {
resolve({
isFulfilled: true,
isRejected: false,
value
});
},
reason => {
resolve({
isFulfilled: false,
isRejected: true,
reason
});
}
);
});
}
);
return Promise.all(promiseArray);
}
// testing data
var p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 1, "first promise of 1 sec");
});
var p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 2, "second promise of 2 sec");
})
var p3 = new Promise((resolve, reject) => {
setTimeout(reject, 1, "rejected promise");
})
promiseSettle([p1, p2, p3]).then(
promises => {
console.log(promises);
}
);