angular - 如果 RxJS 中的条件为真,我可以跳过所有后续的运算符链吗
问题描述
是否可以在 RxJS 5.5 中使用某个运算符来实现条件以跳过所有后续运算符并发出一些值 ( false
)?例如,在这个 ng 服务方法中,如果出现以下情况,我会绕过这个.map
链并false
立即提供价值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);
}
解决方案
我想你总是可以玩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 => ({}))
)
}
}
)
推荐阅读
- windows - docker:使用 net=container:vpn 将端口转发到主机
- apache-flink - flink - 无法启动作业集群
- preact - 具有默认情况的 preact-router 未按预期工作
- c# - 无法将 SQL DATEDIFF 输出转换为 int - 输入字符串的格式不正确
- python - 在 python 3.x 中 pip 安装 pyodbc
- django - Django:从字典列表批量更新而不构建整个查询集
- google-bigquery - BigQuery - 修改预定查询
- ios - 在 UIApplication 上调用 -statusBar 或 -statusBarWindow 的应用程序
- sql-server - 执行存储过程返回语法错误,但运行查询有效
- android - TextInputLayout 样式