How to use debug.js with `Promise.all`
fyc09 opened this issue · 1 comments
fyc09 commented
const logger = require('debug')('test');
function sleep(second) {
return new Promise((resolve, reject) => {
setTimeout(resolve, second * 1000);
});
}
async function test(id) {
await sleep(Math.random());
logger('first %o', id);
await sleep(Math.random());
logger('second %o', id);
}
async function run() {
const ids = [1, 2, 3];
Promise.all(ids.map(id => test(id)));
}
run();
$ DEBUG=* node test.js
test first 1 +0ms
test first 2 +570ms
test first 3 +146ms
test second 1 +136ms
test second 2 +175ms
test second 3 +609ms
$ DEBUG=* node test.js
test first 1 +0ms
test first 3 +154ms
test second 1 +122ms
test first 2 +369ms
test second 3 +97ms
test second 2 +883ms
$ DEBUG=* node test.js
test first 3 +0ms
test first 1 +654ms
test second 3 +104ms
test first 2 +27ms
test second 2 +463ms
test second 1 +82ms
The logs for each Promise in Promise.log
are interleaved. Can I separate them, for example, and print all the logs together after each promise ends. I hope the result is like this:
test first 3
test second 3
test first 1
test second 1
test first 2
test second 2
Qix- commented
No there's no way to do that, sorry.