asyncerator
Version:
Provide supporting types for AsyncIterable/AsyncIterableIterators, promisified stream.pipeline implementation, and Array-like utility operators, sources and sinks.
25 lines (24 loc) • 1.35 kB
JavaScript
// src/source/all.ts
import debug from "debug";
var log = debug("asyncerator:source:all");
async function* all_default(promises) {
const queue = [];
const pending = new Set(promises);
for (const [index, promise] of [...promises].entries()) {
promise.then((value) => {
queue.push(value);
pending.delete(promise);
return value;
}).catch((error) => {
log(`[${index}]`, error);
});
}
while (pending.size > 0) {
await Promise.race(pending);
yield* queue.splice(0, queue.length);
}
}
export {
all_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3NvdXJjZS9hbGwudHMiXSwKICAibWFwcGluZ3MiOiAiO0FBUUEsT0FBTyxXQUFXO0FBSWxCLElBQU0sTUFBTSxNQUFNLHdCQUF3QjtBQVMxQyxnQkFBTyxZQUE0QixVQUFnRDtBQUVqRixRQUFNLFFBQWEsQ0FBQztBQUNwQixRQUFNLFVBQVUsSUFBSSxJQUFJLFFBQVE7QUFFaEMsYUFBVyxDQUFDLE9BQU8sT0FBTyxLQUFLLENBQUMsR0FBRyxRQUFRLEVBQUUsUUFBUSxHQUFHO0FBRXRELFlBQ0csS0FBSyxDQUFDLFVBQVU7QUFDZixZQUFNLEtBQUssS0FBSztBQUNoQixjQUFRLE9BQU8sT0FBTztBQUN0QixhQUFPO0FBQUEsSUFDVCxDQUFDLEVBQ0EsTUFBTSxDQUFDLFVBQW1CO0FBR3pCLFVBQUksSUFBSSxLQUFLLEtBQUssS0FBSztBQUFBLElBQ3pCLENBQUM7QUFBQSxFQUNMO0FBR0EsU0FBTyxRQUFRLE9BQU8sR0FBRztBQUV2QixVQUFNLFFBQVEsS0FBSyxPQUFPO0FBQzFCLFdBQU8sTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNO0FBQUEsRUFDckM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K