当前位置: 首页 > 知识库问答 >
问题:

RxJS中是否有Publishonce类型的运算符?

孙言
2023-03-14
const xSubject = new BehaviorSubject(undefined);
someSource$.subscribe(xSubject);
emitWhenSomeSourceEmits$.pipe(
  concatMap(
    (emission) => of(emission)
        .pipe(
          delayWhen(
            () => someSource$.pipe(
              filter(val => !!val),
              ...
              tap(() => xSubject.next(undefined)),
            ),
        );
  ),
);

期望:emitWhenSomeSourceEmits$的排放应该推迟到somesourceemits$发出新的值。

如果我不使用BehaviorSubject,那么如果someSource$在emitWhenSomeSourceEmits$之前发出,则后者的发出会错误地延迟到下一次发出。

如果我只使用行为主题,emitWhen某物源发射的第一次发射将与某物源定时。但是emitWhen某物源发射的第二次发射将使用行为值并以任何方式发射。

为了克服这个问题,我一直在对xSubject轻触一个未定义的,以便emitWhenSomeSourceEmits的下一个发射等待来自someSource的新值。

有没有更好的非黑客方式?

共有1个答案

呼延辰龙
2023-03-14

邮政编码操作符(https://rxjs-dev.firebaseapp.com/api/index/function/zip)听起来很适合这样做,所以只需压缩(someSource$,emitWhenSomeSourceEmits$)。

 类似资料:
  • 问题内容: 我最近了解到,“%”符号用于计算Python中整数的余数。但是我无法确定是否还有其他运算符或方法来计算Python中的百分比。 就像使用“ /”会给您商数一样,如果仅对整数之一使用浮点数,它实际上会像传统除法一样为您提供答案。那么有没有一种方法可以计算出百分比呢? 问题答案: 在Python中没有这样的运算符,但是自己实现是很简单的。在计算实践中,百分比几乎不像模数有用,所以我认为没有

  • 问题内容: Javascript中是否存在空合并运算符? 例如,在C#中,我可以这样做: 我可以为Javascript找到的最佳近似是使用条件运算符: 这有点怪异恕我直言。我可以做得更好吗? 问题答案: 更新资料 JavaScript现在支持无效的合并运算符(??)。当其左侧操作数为或时,它返回其右侧操作数,否则返回其左侧操作数。 使用前请检查兼容性。 与C#null合并运算符()等效的JavaS

  • 问题内容: 我需要从给定的字符串中删除所有字符,除了剩下的几个字符。如何用regexp做到这一点? 简单测试:不应删除character [1,a,],而应从字符串“ asdf123 *”中删除所有其他字符。 问题答案: 集合中有^。 您应该能够执行以下操作: 完整样本:

  • 当我使用Angular HttpClient发出GET请求时,我得到一个可观察的返回,并在RxJS操作符mergeMap中处理它。 现在一次又一次地抛出404,我想抓住它。最后,浏览器控制台中不应出现错误消息,并且应使用流的下一个值处理管道。 这有可能吗?我没有用catchError()管理它。 以下是我的代码的简化版本: 更新:添加了带有catchError()的方法 我尝试过这种方式,但没有检

  • 问题内容: 我想知道是否有一种方法可以在Java中执行以下操作: 我知道我可以为此做一个函数,但是我只想知道Java是否已经为此做了一些事情。 谢谢! 问题答案: 有很多集合可以让您做类似的事情。例如: 与: 或搭配: 但是,对于简单的,没有类似的构造。

  • 问题内容: Golang中是否没有布尔值的XOR运算符? 我正在尝试做类似的事情,但是它没有为布尔值定义。 问题答案: 那没有。围棋并 没有 提供一个 逻辑 异或运算(即XOR在布尔值)和该 按位 异或操作 仅适用于整数。 但是,可以用其他逻辑运算符重写异或。如果忽略表达式(X和Y)的重新计算, 或者,更简单地说,如Jsor所指出的,