1

我有一系列请求和 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);
        });
4

0 回答 0