当用户在firebase数据库中更新相同对象和相同属性的两个按钮上单击非常快时,我遇到了一个问题。只有一个请求保存和其余覆盖的问题。它发生在用户同时点击两个按钮的情况下。
我的问题是是否有办法以最小的延迟执行点击流。我希望每次执行之间至少有 2 秒。谢谢您的帮助。
我想记录所有点击,但以最小的延迟执行功能。
(function($){
$(function($, undefined){
var count = 0;
const click$ = Rx.Observable.fromEvent($('.btn'), 'click').share();
click$
.map((ev)=> {
count ++;
return count;
})
.bufferTime(1000)
.filter(buffer => buffer.length > 0)
.do((buffer) => console.log(`new buffer: ${buffer}`))
.map((buffer)=> {
return Rx.Observable.fromArray(buffer).concatMap(streams => Rx.Observable.of(streams).delay(2000))
})
.flatMap((s)=> s)
.subscribe((a)=> {
console.log(`${a} : ${new Date()}`)
});
});
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.1.0/rx.all.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button class="btn">Click</button>
</body>
</html>
问题是当我点击多次超过第二次时。来自不同缓冲区的流将同时执行。我怎么能解决它:(例如:
新缓冲区:1,2,3,4
新缓冲区:5,6,7,8,9,10
1 : 2018 年 5 月 12 日星期六 17:22:29 GMT-0600 (MDT)
新缓冲区:11,12,13
5 : 2018 年 5 月 12 日星期六 17:22:30 GMT-0600 (MDT)
2 : 2018 年 5 月 12 日星期六 17:22:31 GMT-0600 (MDT)
11 : 2018 年 5 月 12 日星期六 17:22:31 GMT-0600 (MDT)
2和11同时发生。我怎么能解决它:(