我正在尝试执行多个promise,并希望返回执行的第一个promise的响应,并跳过其他promise的结果。
为此,我创建了以下代码。
api = async num => {
return new Promise((resolve, reject) => {
const randomTimeout = Math.random() * num;
const number = parseInt(num * randomTimeout);
const remainderBy = 10;
setTimeout(() => {
resolve(number);
}, randomTimeout);
});
};
any = async function(promises) {
let returned = false;
function returnFirst(res, i) {
if (!returned) {
console.log(i, res, ' called ');
returned = !returned;
return new Promise((resolve, reject) => {
resolve(res);
});
}
}
for (let i = 0; i < promises.length; i++) {
await promises[i].then(result => {
returnFirst(result, i);
});
}
};
any([api(12), api(1), api(19)]).then(
result => {
console.log('result ', result);
},
reason => {
console.log('Rejected because of ', reason);
}
);
现在,当我执行此代码时,这并没有将promise的结果传递给我从returnFirst函数的promise返回的promise。