完成所有可观察项后订阅最终可观察项吗?

时间:2020-11-07 16:37:03

标签: angular angular9 angular10 rxjs-observables

我在这里有这个逻辑,它创建了许多可观察的对象,并在每个对象完成后执行回调。

from(rows).pipe(
    concatMap(row => this.uploadItem(row))
).subscribe(response => {
    this.currentRowNode.data.uploadStatus = UploadStatus.Success;
    this.currentRowNode.data.cmsRowId = response.responsePayload.cmsRowId
    this.currentRowNode.setData(this.currentRowNode.data);
});

currentRowNode: RowNode;
uploadItem(rowNode: RowNode): Observable<any> {
    this.currentRowNode = rowNode;
    rowNode.data.uploadStatus = UploadStatus.Uploading;
    rowNode.updateData(rowNode.data);
    return this.importService.uploadItem(rowNode.data)
 }

我在这里的问题是,我希望能够订阅一些可以告诉我uploadItem的电话rows

的内容。

那会去哪里?

1 个答案:

答案 0 :(得分:1)

您可以像这样创建一个可观察对象

const final$ = of("completed");

并使用rxjs concat 运算符,将其与现有的可观察对象进行连接。

const myobs$ = from(rows).pipe(concatMap(row => this.uploadItem(row)));
concat(myobs$, final$).subscribe(response=>{
//your existing code here
if(response=="completed")
{
console.log('all observables completed');
}
});

我在这里创建了example stackblitz