我有一系列请求和 4 个网络工作者。我想将响应提供给工人,一旦工人完成就提供另一个响应,依此类推。我不想阻止请求。
我编写的代码没有显示拥有 1 个或 4 个工人之间的任何区别:
const octrees$ = from(spatialKeys)
.pipe(
concatMap((spatialKey: string) => {
console.log("REQUEST");
return this.sgsApi
.getCellById(
sessionId,
volumetricModelQueryId,
spatialKey
)
.then(resp => resp.arrayBuffer())
.then(datBuffer => ({
datBuffer,
spatialKey
}));
}),
// SINGLE WEB WORKER
// mergeMap(({ spatialKey, datBuffer }) =>
// this.unpackWorkers[0].unpackDat(spatialKey, datBuffer)
// )
bufferCount(4),
switchMap(values => {
console.log("UNPACK");
return values.map(({ datBuffer, spatialKey }, index) =>
this.unpackWorkers[index].unpackDat(
spatialKey,
datBuffer
)
);
}),
combineAll()
)
.subscribe(val => {
const t1 = performance.now();
console.log("COMPLETED at :", (t1 - t0) / 1000, val);
});