【问题标题】:RxJS - POST multipart filesRxJS - POST 多部分文件
【发布时间】: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),
  );

【问题讨论】:

    标签: post rxjs multipart


    【解决方案1】:

    我不确定我是否完全理解所显示的代码的作用,但是这样的工作是否可行:

      uploadDocumentsSaved$ = merge(
        this.uploadedDocuments$,
        this.saveAction$
          .pipe(
            concatMap(uploadDocument => this.saveUploadDocuments(uploadDocument)),
            concatMap(uploadDocument => this.uploadDocumentDetailsUrl(uploadDocument.token, uploadDocument.type))
          ))
          .pipe(
            scan((uploadDocuments: UploadDocument[], uploadDocument: UploadDocument) =>
              this.syncUploadDocuments(uploadDocuments, uploadDocument)
            ),
            shareReplay(1)
        );
    

    每次 saveAction 发生时,这将首先调用saveUploadDocuments(我假设它会发帖)然后然后调用uploadDocumentDetailsUrl

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 2015-07-19
      相关资源
      最近更新 更多