Angular 仅在嵌套请求完成后返回可观察
此方法中有两个POST请求: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.
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);
})
)
}
编辑:这是一个错误,所有文件都在一个请求中上载谢谢!我想这就是我要找的