我在这里有这个逻辑,它创建了许多可观察的对象,并在每个对象完成后执行回调。
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
那会去哪里?
答案 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。