我正在获取一个值,并基于返回值,如果实际在第一次返回数据时,我只是将其发送并继续进行,否则,如果没有返回,我将获得默认值并继续处理数据。
我的问题是在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();
}
// ApiCall
getDefaultValues() {
return this.http.get<any>(this.stockUrl + 'getSelectiveDeleteData');
}
答案 0 :(得分:1)
只需使用map
或concatMap
即可使用mergeMap
的变体之一,即可与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
请注意,两个concatMap
块现在都返回Observables。 mapStateToProps
订阅了它们并进一步发出结果。