RxJs - forkJoin 与空数组

2024-03-15

我目前正在使用forkJoin等待数组Observable(s) 之前完成pipe(英)和tap(ping).

我注意到如果数组为空,则不会发出任何信号,我什至不能tap。我该如何解决这种问题?我应该检查数组是否为空吗?

myFirstFunction(...) {
   const observables = ...
   return forkJoin(observables)
}

mySecondFunction(...) {
   return myFirstFunction().pipe(tap(() => ...))
}

那是因为forkJoin要求所有源 Observables 发出至少一项,当没有源 Observables 时,就没有任何东西可以发出。然而,forkJoin仍会发送complete通知,以便您可以使用例如defaultIfEmpty运算符以确保它始终发出至少一个next.

forkJoin(observables).pipe(
  defaultIfEmpty(null),
).subscribe(...);

Demo: https://stackblitz.com/edit/rxjs-kkd1qa?file=index.ts https://stackblitz.com/edit/rxjs-kkd1qa?file=index.ts

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RxJs - forkJoin 与空数组 的相关文章

  • 在 http 请求中使用 `retryWhen`

    我已经延长了Http类来设置默认标头并处理 angular2 应用程序内所有请求的错误 我想使用retryWhen 对某些错误重试请求 哪些错误应该retryWhen重试请求以及出现哪些错误时应停止 Injectable export cl
  • Rxjs 主题下一个或 onNext

    我对 rxjs 很陌生 请耐心等待 例如在本教程中http blog angular university io how to build angular2 apps using rxjs observable data services
  • 如何在 RXJS 中启动和停止可观察的间隔?

    我有一个非常简单的 timeInterval 可观察对象 我想在不断开订阅者连接的情况下启动 停止传输 无论可观察状态如何 都应该坐下来等待 有可能吗 如果可以的话怎么办 var source Rx Observable interval
  • HTTP 服务的反应式缓存

    我正在使用 RsJS 5 5 0 1 在 Angular 2 中进行缓存 它运行良好 缓存功能的核心是 const observable Observable defer gt actualFn do gt this console log
  • Angular 模板中可观察对象上的 ObjectUnsubscribedErrorImpl

    我正在使用 Angular 11 并且正在使用以下命令访问组件模板中的可观察对象async pipe 路线的第一次加载 一切都工作得很好 没有错误 当我离开该页面并返回时 出现以下错误 组件模板 成分 import Component On
  • Angular 2.0.1 AsyncPipe 不适用于 Rx 主题

    AsyncPipe 与BehaviorSubject 一起使用 但我不想用空数据初始化我的服务 因此我使用Subject 代替 问题是 NgFor 和 asyncPipe 不能与主题一起使用 这是一个问题吗 这有效 成分 export cl
  • 来自 unpkg 的 rxjs 捆绑包

    我有一个 Angular 2 0 0 2 2 0 中有同样的问题 项目 当前的开发版本生成超过 100 个 http 请求 这是因为它加载了非捆绑版本的 rxjs 当我有以下情况时 map our app is within the app
  • http 请求每 x 秒一次(角度)

    我试图在 angular2 中每 x 秒刷新一次 http 调用 ionViewDidLoad let loader this LoadingController create content Please Wait loader pres
  • 顺序订阅可观察数组

    在这里 我用过forkJoin从 rxjs 并行订阅可观察数组 但我想一一订阅 最好的解决方案是什么 下面是我的代码 var observables Observable forkJoin observables subscribe gt
  • 如何在计时器触发后正确调用函数进行单元测试。角度 7、RXJS 6

    在我的 Angular 7 应用程序中 我有一个用于跟踪活动用户任务的服务 在该服务中 计时器每秒运行一次 以检查是否有任何任务在 30 秒内仍未完成 如果发现任何任务已过期 则该任务将通过服务上的事件发射器发出 以便在其他地方处理 当应用
  • Angular2 可观察定时器条件

    我有一个计时器 initiateTimer if this timerSub this destroyTimer let timer TimerObservable create 0 1000 this timerSub timer sub
  • 角度测试 - 可观察管道不是函数

    我想为照片上传方法编写一个单元测试 但我明白了Failed this task snapshotChanges pipe is not a function TypeError this task snapshotChanges pipe
  • 获取所有当前(活动)订阅

    是否可以获取所有 活动 订阅而不手动存储它们 我想unsubscribe所有 活动 订阅 并且不想在数组或变量中引用它们中的每一个 我取决于你使用的是Subject还是Observable 但可能没有办法 自动 做到这一点 观测值 我不认为
  • 使用 Angular HTTP Observable 的轮询 API

    在我的组件 html 中 我使用 asyncPipe 来订阅此 http 服务 该服务将 json 响应对象映射到类实例数组 这一切都很好 但我希望 http 服务每隔几秒轮询一次 我已经尝试了很多东西 比如间隔 但目前 RXJS 似乎有点
  • 角度 2 中的事件发生后重置计时器

    我在 15 分钟空闲会话后实现注销 而不使用第 3 方库或 ngrx 我创建了一个服务 run window onload gt this startTimer window onmousemove gt this resetTimer s
  • 在 Angular 2 中进行并行调用 http get 或 post 调用

    如何在 Angular 2 中进行并行调用 HTTP get 或 post 调用 我有 2 个服务电话 其中一个愈伤组织的响应必须拨打另一个电话 有人可以建议我如何通过错误处理场景进行这些并行调用吗 如果您的服务是Observable基于而
  • Angular 2 可观察间隔锁定 UI

    当我使用Observable Interval要执行 UI 的 http 刷新 如果间隔太快 它会锁定 UI 上的按钮 使其无法工作 按钮没有记录点击 似乎是一个计时问题 如果我增加时间并因此错过了 get 调用 则按钮可以工作 但数据会延
  • Angular 7通过调用两次服务订阅方法进行通信

    我正在使用角度 尝试与非父子组件进行通信 所以我通过服务来传达它 服务 ts Istoggle false Output change EventEmitter lt boolean gt new EventEmitter toggle t
  • Angular 2 Observable 具有多个订阅者

    我有一个 Angular 2 服务 可以从 API 获取数据 该服务有 3 个订阅者 在组件中定义 每个订阅者都对数据执行其他操作 不同的图表 我注意到我正在向 API 发出三个 GET 请求 而我想要实现的是一个请求 并且订阅者将共享数据
  • 可从 Angular2 中的

    使用 Angular 2 从按钮的 onclick 事件创建可观察对象的首选方法是什么 我不确定从组件代码中的 DOM 获取本机元素是否被认为是最佳实践 我该怎么做 或者是否还有其他我不知道的快捷方式 别想太多 ViewChild butt

随机推荐