gpt4 book ai didi

rxjs - 在满足条件之前忽略流中的事件?

转载 作者:行者123 更新时间:2023-12-04 20:35:08 25 4
gpt4 key购买 nike

我从按钮单击事件创建了一个流。该按钮对应于对数据库的创建操作。显然,我希望数据库操作只触发一次(至少在它完成之前)。有没有办法忽略 createButtonStream 上的事件?直到 Api.create返回?即,第一个事件应该调用#Api.create,后续事件应该被忽略,直到#Api.create 返回。

createButtonStream
.flatMap(() => Api.create()) //Needs to fire once until doSomething() is called
.onValue(result => doSomething(result))

想到的唯一方法是使用全局状态......我宁愿不这样做。
//i don't wanna do this
let condition = true

createButtonStream
.filter(() => condition)
.map(() => condition = false)
.flatMap(() => Api.create())
.onValue(result => {condition = true; doSomething(result)})

最佳答案

RxJS您使用 flatMapFirstexhaustMap运算符(如果使用 RxJS 5)

createButtonStream
.flatMapFirst(() => Api.create())
.subscribe(result => doSomething(result));
flatMapFirst如果事件在第一个源完成之前到达,则将静默删除事件,不应调用该方法。

关于rxjs - 在满足条件之前忽略流中的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37431950/

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