计算多个调用的asynchronous函数的执行次数

如果工作函数正在执行一些操作,比如从队列中选取一个项目并执行一些操作。 我将如何获得doWorkfunction的执行时间。 我想知道平均需要多less时间来完成工作。

示例代码

 function doWork () { return Promise.resolve({first: 'Tony', last: 'Starks'}) } async function wrapper () { console.time('wrapper') const response = await doWork() console.timeEnd('wrapper') return response } Promise.all([ wrapper(), wrapper(), wrapper() ]).then((result) => console.info(result)) 

产量

 wrapper: 0.388ms [ { first: 'Tony', last: 'Starks' }, { first: 'Tony', last: 'Starks' }, { first: 'Tony', last: 'Starks' } ] (node:2749) Warning: No such label 'wrapper' for console.timeEnd() (node:2749) Warning: No such label 'wrapper' for console.timeEnd() 

如果你很难平行testing,我推荐这种方法:

 function doWork () { return Promise.resolve({ first: 'Tony', last: 'Stank' }) } async function wrapper (index) { console.time(index) const response = await doWork() console.timeEnd(index) return response } Promise.all( Array(3) // some big number .fill(wrapper) .map((wrapper, index) => wrapper(index)) ).then((results) => console.info(results)) 

如果你只是想让你的console.time()console.end()调用来解决你的asynchronous函数,那么每次调用console.time()console.end()时都可以生成一个唯一的标签当有多个同时在线的呼叫时(因为每个呼叫都将使用自己的标签),测量结果仍然有效:

 let wrapperCntr = 0; async function wrapper () { let cnt = wrapperCntr++; console.time('wrapper' + cnt); const response = await doWork(); console.timeEnd('wrapper' + cnt); return response; }