You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RxJS流中条件插入数据、延迟后再发出原事件

RxJS条件性插入数据并延迟发出原事件

你需要实现的是当流中出现{ data: 3 }时,先发出{ data: 'a' },等待500ms后再发出原事件{ data: 3 }。可以通过concat操作符将两个Observable按顺序串联起来,修改后的代码如下:

from(Array(10).keys())
  .pipe(
    map(i => ({ data: i })),
    concatMap(e => {
      if (e.data === 3) {
        // 先发出{data:'a'},延迟500ms后发出原事件e
        return concat(
          of({ data: 'a' }),
          of(e).pipe(delay(500))
        );
      }
      return of(e);
    }),
  )
  .subscribe(i => console.log(i));

逻辑说明:

  • concat操作符会按顺序订阅传入的Observable,只有前一个Observable完成后,才会订阅下一个。这里先订阅of({ data: 'a' }),立即发出数据;
  • 接着订阅of(e).pipe(delay(500)),等待500ms后发出原事件{ data: 3 };
  • 其他非3的事件保持原有逻辑,直接发出。

内容的提问来源于stack exchange,提问作者phylax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:42:01