【发布时间】:2021-05-07 11:44:35
【问题描述】:
我正在对多部分文件进行 POST。当文件较小时(2 个 50kb 的文件)。一切正常。
当文件较大时(10 个 500kb 的文件),它无法正常工作。
我认为原因是 POST 需要一段时间才能返回结果。
首先,我通过调用 POST 的合并来合并两个 obs。 其次,我确实通过 conmbineLatest uploadDocumentsSaved 和 behaviorSubject 操作 uploadDocumentGetDetailsAction 获得了 uploadDocumentDetails$。
由于调用快速uploadDocumentGetDetailsAction,POST尚未完成。
POST先完成后,我应该如何实现obs来获取GET?
uploadDocumentsSaved$ = merge(
this.uploadedDocuments$,
this.saveAction$
.pipe(
concatMap(uploadDocument => {
return this.saveUploadDocuments(uploadDocument);
})
))
.pipe(
scan((uploadDocuments: UploadDocument[], uploadDocument: UploadDocument) =>
this.syncUploadDocuments(uploadDocuments, uploadDocument)
),
shareReplay(1)
);
uploadDocumentDetails$ = combineLatest([
this.uploadDocumentsSaved$,
this.uploadDocumentGetDetailsAction$
]).pipe(
map(([uploadedDocuments, selectedUploadedDocument]) =>
uploadedDocuments.find(uploadedDocument => uploadedDocument.type = selectedUploadedDocument)
),
switchMap(uploadDocument => this.uploadDocumentDetailsUrl(uploadDocument.token, uploadDocument.type)),
shareReplay(1),
);
【问题讨论】: