Firebase realtime database 使用Rxjs,通过彼此之间的最小延迟来分离点击事件流

Firebase realtime database 使用Rxjs,通过彼此之间的最小延迟来分离点击事件流,firebase-realtime-database,rxjs,rxjs5,data-stream,rxjs-dom,Firebase Realtime Database,Rxjs,Rxjs5,Data Stream,Rxjs Dom,当用户在firebase数据库中更新同一对象和同一属性的两个按钮上快速单击时,我遇到了一个问题。只有一个请求保存,其余请求覆盖的问题。它发生在用户在同一秒点击两个按钮的情况下 我的问题是,是否有一种方法可以以最小的延迟执行点击流。我希望每次执行之间至少有2秒。谢谢你的帮助 我想记录所有的点击,但执行功能之间的最小延迟 函数${ $function$,未定义{ var计数=0; const click$=Rx.Observable.fromEvent$'.btn',click'.share; 点

当用户在firebase数据库中更新同一对象和同一属性的两个按钮上快速单击时,我遇到了一个问题。只有一个请求保存,其余请求覆盖的问题。它发生在用户在同一秒点击两个按钮的情况下

我的问题是,是否有一种方法可以以最小的延迟执行点击流。我希望每次执行之间至少有2秒。谢谢你的帮助

我想记录所有的点击,但执行功能之间的最小延迟

函数${ $function$,未定义{ var计数=0; const click$=Rx.Observable.fromEvent$'.btn',click'.share; 点击$ .mapev=>{ 计数++; 返回计数; } .bufferTime1000 .filterbuffer=>buffer.length>0 .dobuffer=>console.log`新缓冲区:${buffer}` .mapbuffer=>{ 返回Rx.Observable.fromArraybuffer.concatMapstreams=>Rx.Observable.ofstreams.delay2000 } .flatMaps=>s .subscribea=>{ console.log`${a}:${new Date}` }; }; }jQuery; 标题 点击
您可以使用间隔流压缩事件流,以将每个发射与间隔耦合。源值将在两次排放之间至少延迟2秒:

const source$ = Rx.Observable.from([1,2,3,4]);
const interval$ = Rx.Observable.interval(2000);
Rx.Observable.zip(source$, interval$)
  .map(([value, _index]) => value)
  .subscribe(console.log);

这个怎么样,但是通常你可以用http调用替换定时器函数,你不能确定http调用需要多长时间

const click$ = Rx.Observable.fromEvent(btn, 'click')

click$.concatMap(e=>click$.concatMap(e=>Rx.Observable.timer(2000)))
.subscribe(a=> console.log(`${a} : ${new Date()}`));

你只想在中间运行1,5,11和2秒?每个数字都是请求的示例,我希望按照它们的顺序执行它们,它们之间的延迟为2秒。我的意思是我希望执行时间为1,2,3,4,5,6,7,8,9,10,11,12,13,每个数字之间的延迟为2秒。这比我的代码要好。我将代码更改为:var count=0;const click$=Rx.Observable.fromEvent$'.btn',click'.share;常数间隔$=Rx.Observable.interval2000;Rx.Observable.zipclick$,interval$.map[value,_index]=>{count++;return count;}.subscribea=>{console.log${a}:${new Date};但是,当我多次单击时,我仍然会得到具有相同时间的流。Anywhere solution?非常有效。你能解释一下它是怎么工作的吗。谢谢。请先单击$first click,然后等待第一次单击$fires,并延迟2秒,直到它可以触发。