node_concurrency.mjsjavascript · 20 linesall
#!/usr/bin/env node
import assert from 'node:assert/strict';

const release = Promise.withResolvers();
let started = 0;
let finished = 0;
async function work(value) {
  ++started;
  await release.promise;
  ++finished;
  return value;
}
const children = [work(1), work(2)];
assert.equal(started, 2);
assert.equal(finished, 0);
release.resolve();
const [a, b] = await Promise.all(children);
assert.equal(finished, 2);
assert.equal(a * 10 + b, 12);
console.log('joined:', a * 10 + b);