gpt4 book ai didi

javascript - RxJS 中有publishOnce 类型的运算符吗?

转载 作者:行者123 更新时间:2023-11-28 03:08:44 25 4
gpt4 key购买 nike

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$ 的发射应该延迟,直到 someSource$ 发出新值。

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

如果我只使用BehaviorSubject,则emitWhenSomeSourceEmits的第一次发射将与someSource一起计时。但是,emitWhenSomeSourceEmits 的第二次发射将使用 Behaved 值并无论如何发射。

为了克服这个问题,我一直在 xSubject 上点击一个 undefined ,以便 emmitWhenSomeSourceEmits 的下一次发射等待 someSource 的新值。

是否有更好且非hacky的方法来做到这一点?

最佳答案

zip 运算符 ( https://rxjs-dev.firebaseapp.com/api/index/function/zip ) 听起来非常适合此操作,因此只需 zip(someSource$, emmitWhenSomeSourceEmits$)

关于javascript - RxJS 中有publishOnce 类型的运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60358581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com