恢复执行的第一个承诺的响应并丢弃其他承诺

时间:2020-02-18 03:56:16

标签: javascript promise

我正在尝试执行多个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。

0 个答案:

没有答案