确定一个承诺花了多长时间

Determine how long a promise took

我正在使用 q 库来实现承诺。我有以下代码

Q.all([thumbnailPromise, createSnapshotPromise]).spread((thumbnailRep, snapshotRep) => {

如何确定每个承诺花费的时间?具体来说thumbnailPromise和createSnapshotPromise分别用了多长时间?

请注意,我要同时遵守承诺运行。

谢谢!

我想你可以写一个包装你的承诺的函数:

const timedPromise = async (promFac) => {
    const start = performance.now();
    const returnValue = await promFac();
    return {
        value: returnValue,
        elapsed: performance.now() - start;
    }
}

并像这样使用它:

Q.all([
    timedPromise(() => thumbnailPromise) , 
    timedPromise(() => createSnapshotPromise)])
  .spread((thumbnailRep, snapshotRep) => {
    console.log(`thumbnailProm took ${thumbnailRep.elapsed}, returned ${thumbnailRep.value}`);
  })

未测试。

可以使用console.time()MDN reference 另一种选择是使用 hrtime.

Promise 是函数,如果您不能直接访问函数,可以将它们包装在一个函数中。