gpt4 book ai didi

angular - RxJS 管道链接,中间有 IF 语句

转载 作者:行者123 更新时间:2023-12-04 01:19:41 25 4
gpt4 key购买 nike

我得到一个值,并根据返回值,如果数据在我第一次发送时实际返回并继续,否则如果没有返回,我将获得默认值并继续处理数据。

我的问题是在 IF 语句之后返回默认数据。我无法让它返回数据,而不是可观察/订阅

它看起来像这样:

getValuesFunction() {
const getFirstValues$ = this.ApiCall.getFirstValues();
this.subscription = getFirstValues$.pipe(
map(data => {
if (data.length === 0) {
// this line is the one I have a problem with
return this.processedStockApi.getDefaultValues().subscribe();
} else {
// this line returns fine
return data;
}
}),
switchMap(data => this.apiCall.doSomethingWithData(data))
).subscribe();
}

//API调用
getDefaultValues() {
return this.http.get<any>(this.stockUrl + 'getSelectiveDeleteData');
}

最佳答案

代替 map 使用它的一种变体,它可以与 Observables 一起工作,如 concatMapmergeMap ( switchMap 在这种情况下也能工作):

getFirstValues$.pipe(
concatMap(data => {
if (data.length === 0) {
// this line is the one I have a problem with
return this.processedStockApi.getDefaultValues();
} else {
// this line returns fine
return of(data);
}
}),
switchMap(data => this.apiCall.doSomethingWithData(data)),
).subscribe(...);

请注意,两个 if-else 块现在都返回 Observables。是 concatMap 订阅它们并进一步发出它们的结果。

关于angular - RxJS 管道链接,中间有 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53482188/

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