rxjs封装click,mousedown,mouseup事件
let mouseDown = fromEvent(ele, 'mousedown');
let mouseUp = fromEvent(ele, 'mouseup');
let mouseMove = fromEvent(ele, 'mousemove');
let source2 = mouseDown
.pipe(
map(ev => {
console.log('map1',ev.timeStamp)
return mouseUp.pipe(map(ev2 => {
console.log('map2',ev.timeStamp)
return [ev, ev2]
}))
}),
concatAll()
)
.pipe(
debounceTime(250)
)
source2.subscribe(res => {
console.log('res',res[1].timeStamp, res[0].timeStamp)
// if(res[1].timeStamp - res[0].timeStamp > 500) {
// }
})
为什么map2的值恒定不变,map1却在变###
想不明白,求帮助
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
concatAll
的机制是订阅从上游传下来的第一个流,当第一个流完结时,在订阅第二个流,而你这个上游map
中产生的流来自于mouseUp
,是一个无限流永远不会完结,导致concatAll
永远也没有机会订阅第二个流,而这个流中的ev
就是来自mouseDown
的第一次点击,所以值一直是固定的.如果要想要获取成对的
mouseDown
和mouseUp
的值的话,用zip