angular - Kan jag hoppa över alla efterföljande operatorer i kedjan om villkoret är sant i RxJS
Är det möjligt i RxJS 5.5 att implementera ett villkor med någon operator för att hoppa över alla efterföljande operatorer och sända ett värde (false)? Till exempel i denna ng-tjänstmetod skulle jag kringgå en hel del av denna .map-kedja och tillhandahålla värdet false om response.length === 0:
getProjectDrivers(projectId): Observable<any> {
return this.http.get('someUrl').pipe(
// if (response.length === 0) { return false; and skip whole operator chain bellow}
map((response: ProjectDriver[]) => response.filter((projectDriver: ProjectDriver) => projectDriver.streamName !== "AllRevenueStreamTotals")),
map((response: ProjectDriver[]) => command => ({})
)
)
.catch(this.handleError);
}
Svar #1
Jag antar att du alltid kan leka med switchMap
return this.http.get('someUrl').pipe(
switchMap(response => {
if (!response.length) {
return of(null);
} else {
return of(result).pipe(
map((response: ProjectDriver[]) => response.filter((projectDriver: ProjectDriver) => projectDriver.streamName !== "AllRevenueStreamTotals")),
map((response: ProjectDriver[]) => command => ({}))
)
}
}
)
