Rxjs并行请求webworkers队列

时间:2018-05-19 04:40:32

标签: typescript web-worker rxjs6

我有一系列请求和4名网络工作者。我希望将响应提供给工作人员,并且一旦工作人员完成另一个响应,依此类推。我不想阻止请求。

enter image description here

我写的代码与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);
        });

0 个答案:

没有答案