以下是我们希望使用的简单程序,并且仅使用RXJS Observables
:
Observable.fromEvent
与我们的表格绑定。loginUser()
,它向服务器发送http请求并返回Observable。 take(1)
,takeUntil()
,takeLast()
没有帮助我们。那么,如果我们在500毫秒内单击5次登录按钮并在loginUser()
完成后再次使其可用,那么停止登录执行的正确方法是什么?
这应该仅适用于Observables,唯一的问题是上一句中描述的最后一部分。
谢谢大家的帮助!
答案 0 :(得分:2)
您现在可以使用flatMapFirst
或exhaustMap
。它背后的想法是每次点击都会创建一个新的Observable,随后将被展平。当一个正在进行中时,它会默默地丢弃任何新事件。
Observable.fromEvent(submit, 'click')
.map(() => {}) // Login values
.exhaustMap(credentials => loginUser(credentials))
.subscribe(x => console.log("Logged in!"));