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 与空数组 的相关文章

  • rxjs:定期执行一些操作,中间有特定的延迟

    客户端应用程序向服务器发送请求 这可能需要很长时间才能完成 一旦请求完成或失败 客户端应该等待一段时间 即10秒 然后再次发送请求 目前的工作解决方案是这样的 appRequest new Subject ngOnInit void thi
  • 使用 Angular 5 和 RxJS 观察带有过滤器的数组

    我正在创建一个简单的论坛 我正在寻找过滤帖子 我在 RxJS 中使用 pipe 和 filter 时遇到一些问题 我试图 从内存中检索 api 帖子列表api posts 当与 http get 一起使用时 它返回一个Observable
  • Http 请求的加载指示器

    我的问题的根源是在 http 请求上显示加载指示器 我想在服务级别上执行此操作 而不必为每个组件编写代码 我所做的是实现一个 http 包装器 它基本上执行以下操作 getMyHttpObservable setLoadingIndicat
  • 使用 Angular HTTP Observable 的轮询 API

    在我的组件 html 中 我使用 asyncPipe 来订阅此 http 服务 该服务将 json 响应对象映射到类实例数组 这一切都很好 但我希望 http 服务每隔几秒轮询一次 我已经尝试了很多东西 比如间隔 但目前 RXJS 似乎有点
  • 对嵌套的 observable 进行排序

    我这里有一个 JSON 文件 如下所示 question What is your age range options 10 20 20 30 30 40 40 50 question How did you find us options
  • 非规范化 ngrx 存储 - 设置选择器?

    我目前正在 ngrx 项目中处理一个有点复杂 深层 的结构 它可以被认为是父对象的数组 具有多个级别的子对象 它在服务器端标准化 扁平化 我的商店中的功能看起来像这样 rootObjs level1 byId lvl1 1 id lvl1
  • 如何在 RxJS 中通过 ID 去抖

    我的问题是下一个 我想取消我的应用程序的点赞功能 我使用操作在我的应用程序中进行更改 例如 dispatch likePost 1 gt dispatch type LIKE POST id 1 给出下一个例子 我在时间 0 发送一个操作
  • 可从 Angular2 中的

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

    我正在尝试重复请求 直到响应包含使用 RxJS 的数据 此时我想调用成功 或失败 处理程序 但我在使用 RxJS 时遇到了麻烦 这是我目前的方法 redux observable action observable mergeMap gt
  • 如何使用 forkjoin 返回 Angular 中两个独立 API 调用的组合响应

    我有两个独立的 api 调用 下面是两个api调用的代码 public getLendingType partyId string Observable lt lendingType string partyId string gt ret
  • 为什么 Angular takeuntil ngUnsubscribe 之前有一个“下一步”?

    有大量关于使用 takeUntil 运算符取消订阅流的信息 如下所示 export class CategoryOptionInputComponent constructor private svc MyService protected
  • 如何使用 rxpy/rxjs 延迟事件发射?

    我有两个事件流 一个来自电感环路 另一个来自网络摄像机 汽车将驶过环路 然后撞上相机 如果事件彼此相差在 N 毫秒内 汽车总是会首先进入循环 我想将它们组合起来 但我也希望每个流中不匹配的事件 硬件可能会失败 全部合并到单个流中 像这样的事
  • 如何在 Angular httpClient 拦截器中使用异步服务

    使用Angular 4 3 1和HttpClient 我需要将异步服务的请求和响应修改为httpClient的HttpInterceptor 修改请求的示例 export class UseAsyncServiceInterceptor i
  • RxJS 比命令式更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对函数式编程和函数式反应式编程比较陌生 我读了很多遍函数式反应式编程的强大力量 好的 可读 避免副作用等 但是 我不知道如何以功能
  • 使用许多嵌套的 switchMap 是不好的做法吗?

    我有 HTTP 拦截器 在该拦截器中 在更改请求之前 我需要打开一个加载程序 真正让我担心的是我最终会得到很多switchMaps why 加载器是异步的 我还需要将从拦截器传递的消息转换为加载器服务 翻译消息也是异步的 在拦截器中 我应该
  • 如何轻松地将 Observable 转换或分配给行为主体,以便其他组件可以共享它

    我是可观察风格编程的新手 我有一个问题 我想在组件之间跨应用程序共享用户信息 并且我使用BehaviorSubject 来共享此信息 这是受到将BehaviorSubject 共享为AuthInfo 的启发 如果我可以在我的应用程序组件中共
  • 是否可以使用 rxjs Angular 5 在其他选项卡浏览器中订阅 observable

    我有一个角度应用程序 有两个页面 我在浏览器的每个选项卡中打开它们 如果我在第 1 页中执行某种方法 我希望第 2 页使用 rxjs 订阅数据更改并像实时应用程序一样更新第 2 页中的数据 是有没有办法在没有 websocket 的情况下做
  • 如何使用 RxJS 并行执行其他 Observable 之前等待第一个 Observable 完成

    目前我已经并行运行了所有 3 个请求 现在我需要等待第一个完成 然后才能并行触发另外两个 这就是我现在所拥有的 return Observable forkJoin request1 request2 request3 map succes
  • 如何使用EventManager监听Angular中的window.resize事件?

    我从这个 stackoverflow 借用了一些代码 角度窗口调整大小事件 https stackoverflow com questions 35527456 angular window resize event答案的作者说我应该使用事
  • ng2-翻译 customLoader 和每种语言的多个文件

    在 Ionic2 应用程序中 我使用 ng2 翻译应用程序中的字符串 现在我需要将翻译文件分成每种语言的多个文件 例如de json and de gs1ais json 由于 ng2 translate 仅限于每种语言一个文件 我尝试实现

随机推荐