gpt4 book ai didi

javascript - RxJS:跳过条件mergeMap

转载 作者:行者123 更新时间:2023-12-03 00:34:50 25 4
gpt4 key购买 nike

我有这样的服务方法:

updateUser(article) {
this.httpClient
.put(`articles/${article.id}`, article)
.pipe(
map(res => res.response),
mergeMap(updatedArticle =>
this.articlesTagsAPI.someMethod(updatedArticle.id).pipe(
map(tags => ({ ...updatedArticle, tags })),
article.articleType === 'news'
? mergeMap(() =>
this.articlesTagsAPI.someOtherMethod(updatedArticle.id, article.tags).pipe(
map(() => {
return {
...updatedArticle,
tags: article.tags
};
})
)
)
: null
)
)
);
}

如您所见 - 我正在尝试添加一个条件 mergeMap (如果条件 -> 调用其他方法)有可能以某种方式做吗?

因为返回 null - 不是最好的主意

如果条件无效,应该会发生这样的事情:

updateUser(article) {
this.httpClient
.put(`articles/${article.id}`, article)
.pipe(
map(res => res.response),
mergeMap(updatedArticle =>
this.articlesTagsAPI.someMethod(updatedArticle.id).pipe(
map(tags => ({ ...updatedArticle, tags }))
)
)
);
}

最佳答案

正如本文所述,非常有用article ,正确的方法是添加 of 指令,以便始终在最终订阅中返回 Observable 的值。

试试这个:

updateUser(article) {

this.httpClient
.put(`articles/${article.id}`, article)
.pipe(
map(res => res.response),
mergeMap(updatedArticle =>
this.articlesTagsAPI.someMethod(updatedArticle.id).pipe(
map(tags => ({ ...updatedArticle, tags })),
article.articleType === 'news'
? mergeMap(() =>
this.articlesTagsAPI.someOtherMethod(updatedArticle.id, article.tags).pipe(
map(() => {
return {
...updatedArticle,
tags: article.tags
};
})
)
)
: of(null)
)
)
);
}

关于javascript - RxJS:跳过条件mergeMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53705994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com