我正在尝试了解rxjs(6)以及应该如何有条件地打电话给我写第二篇http post。
我的情况是:
我的课程
export class BasePortalDetailsManagerService {
updateCertificate(file: File): Observable<IUploadProgress> {
return this._azureBlobStorage
.uploadCertificateToBlobStorage2(file, this.portalKey)
.pipe(
map(progress => this.mapProgress2(progress))
);
}
private mapProgress2(fileProgress: FileProgress): IUploadProgress {
if (fileProgress.Progress === 100) {
console.log('I can do something here but there must be a better way');
} else {
return {
filename: fileProgress.FilePath,
progress: fileProgress.Progress
};
}
}
}
我一直在看和读各种各样的东西,似乎唯一发生的是,这使我确信我的方法是错误的。我似乎无法理解各种教程。
我关注的各种链接
答案 0 :(得分:0)
使用map
而不是concatMap
并根据progress
返回用of(progress)
包裹在Observable中的原始对象,或者返回另一个使第二个请求并映射其请求的Observable结果到progress
:
this._azureBlobStorage.uploadCertificateToBlobStorage2(file, this.portalKey).pipe(
concatMap(progress => progress.Progress === 100
? this.mapProgress2(progress).pipe(
map(filename => ({ // This could go inside `mapProgress2` as well
filename: progress.FilePath,
progress: progress.Progress
})),
)
: of(progress)
),
);