确定javascript承诺花了多长时间

时间:2018-02-08 13:47:25

标签: javascript promise

有没有人知道我可以确定每个承诺在Promise.all([...])执行多长时间?

提前致谢!

1 个答案:

答案 0 :(得分:1)

你可以制作自己的Promise.all功能。

下面是一个示例,它返回它返回的数组中每个promise的时间,该数组也包含promises的结果,但当然在这个demo中我的wait函数没有任何返回。 / p>



function wait(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

async function myPromiseAll(promises) {
  const starttime = new Date().getTime();
  const timings = [];
  promises.forEach((prom, ix) => {
    prom.then(() => {
      timings[ix] = new Date().getTime() - starttime;
    });
  });
  const result = await Promise.all(promises);
  return {result, timings};
}

async function run() {
  console.log("Starting stuff.");
  const ret = await myPromiseAll([
    wait(1000), wait(2000)]);
  console.log(ret.timings);
  // console.log(ret.result); result of promises
}

run();