Angular 仅在嵌套请求完成后返回可观察

Angular 仅在嵌套请求完成后返回可观察,angular,post,rxjs,observable,Angular,Post,Rxjs,Observable,此方法中有两个POST请求: public createArticle(request: IArticle) { const requestPath = `${this.backendUrl}/articles`; return this.http .post<IResponse<IArticleApiContract>>(requestPath, getArticleApiContract(request), { headers: this.

此方法中有两个POST请求:

public createArticle(request: IArticle) {
  const requestPath = `${this.backendUrl}/articles`;
  return this.http
    .post<IResponse<IArticleApiContract>>(requestPath, getArticleApiContract(request), {
      headers: this.headers
    })
    .pipe(map(processResponseItem))
    .pipe(map(responseItem => getArticlesModel(responseItem)))
    .pipe(
      map(article => {
        if (request.uploads) {
          const uploadPath = `${this.backendUrl}/articles/${article.id}/files`;
          const formData = new FormData();
          request.uploads.forEach(file => {
            formData.append('fileData', file);
          });
          this.http
              .post<IResponse<IFileApiContract>>(uploadPath, formData, {
                headers: this.headers
              })
              .toPromise();
        }
        return article;
      })
    );
}
第一个创建一篇文章,第二个上传一些文件到文章中。 只有上传请求完成后,我如何才能返回Observable?因为这个observable已经创建了一个字段,我在提交后用它关闭一个模式窗口。但现在我在上传完成之前收到了observable。

您可以使用它来解决问题

public createArticle(request: IArticle) {
const requestPath = `${this.backendUrl}/articles`;
return this.http
    .post<IResponse<IArticleApiContract>>(requestPath, getArticleApiContract(request), {
        headers: this.headers
    })
    .pipe(
        map(processResponseItem),
        map(responseItem => getArticlesModel(responseItem)),
        mergeMmap(article => {
            if (request.uploads) {
                const uploadPath = `${this.backendUrl}/articles/${article.id}/files`;
                const formData = new FormData();
                request.uploads.forEach(file => {
                    formData.append('fileData', file);
                });

                return this.http.post<IResponse<IFileApiContract>>(uploadPath, formData, {headers: this.headers}).pipe(map(() => article))
            }
            return of(article);
    })
    )
}

编辑:这是一个错误,所有文件都在一个请求中上载谢谢!我想这就是我要找的