1

我有一组可观察对象,每个对象都使用不同的请求 ID 发出 API 请求。

我目前正在使用 combineLatest 来检索 HttpEvent 对象并尝试计算在回调中下载的进度。

但是,combineLatest 会为每个 observable 发出整个响应数组,即使该 HttpEvent 没有附加任何进度。

我想知道在这个用例中组合多个 observable 的最佳 rxjs/operator 是什么?

代码:

    let featureDescriptionObsvs: Observable<any>[] = [];
    for (let key of Object.keys(res.breakdown)) {
    featureDescriptionObsvs.push(this.dataServ.getFeatureDescription(key));
    }
    combineLatest(...featureDescriptionObsvs).subscribe((events: any) => {

events.map((event: HttpEvent<any>): void => {
                    switch (event.type) {
                        case HttpEventType.Sent:
                            break;
                        case HttpEventType.ResponseHeader:
                            break;
                        case HttpEventType.DownloadProgress:
                            totalProgress += event.loaded / event.total;
                            break;
                        case HttpEventType.Response:
                            break;
                    }
                });
                let avgProgress = totalProgress / featureDescriptionObsvs.length;
                console.log(avgProgress * 100);
                console.log('\n');
            });
4

0 回答 0