Javascript 我怎样才能暂时“离开”;块;bacon.js中使用另一个流的EventStream?
我正试图用FRP概念来概括我的想法,并使用Javascript 我怎样才能暂时“离开”;块;bacon.js中使用另一个流的EventStream?,javascript,jquery,frp,bacon.js,Javascript,Jquery,Frp,Bacon.js,我正试图用FRP概念来概括我的想法,并使用bacon.js构建一个图像滑块。我正在映射next按钮(这是一个人为的示例,顺便说一句)单击流,如下所示: var position = $slideshow.find('.next').asEventStream('click').map(function(){ return 1; }).scan(0, function(x,y){ return x + y < $slideshow.find('.slide').length
bacon.js
构建一个图像滑块。我正在映射next
按钮(这是一个人为的示例,顺便说一句)单击流,如下所示:
var position = $slideshow.find('.next').asEventStream('click').map(function(){
return 1;
}).scan(0, function(x,y){
return x + y < $slideshow.find('.slide').length ? (x + y) : 0;
});
position.onValue(function(val){
//set things
});
这感觉像作弊(特别是在做FRP“练习”时…),所以我想知道是否有任何方法可以将我的点击流与动画结束事件流结合起来:
var animationEndStream = $slideshow.asEventStream('animationend');
如果您设法将动画结束事件捕获为
EventStream
,例如animEndE
,则现在可以将“正在制作动画”状态定义为属性,如中所示
var animEndE = $slideshow.asEventStream('animationend')
var nextE = $slideshow.find('.next').asEventStream('click')
var prevE = $slideshow.find('.next').asEventStream('click')
var moveE = nextE.map(1).merge(prevE.map(-1))
var animatingP = moveE.awaiting(animEndE)
var position = moveE.filter(animatingP.not()).scan(0, function(x,y) { return x+y })
如您所见,我正在基于animatingP
的否定过滤moveE
流
var animEndE = $slideshow.asEventStream('animationend')
var nextE = $slideshow.find('.next').asEventStream('click')
var prevE = $slideshow.find('.next').asEventStream('click')
var moveE = nextE.map(1).merge(prevE.map(-1))
var animatingP = moveE.awaiting(animEndE)
var position = moveE.filter(animatingP.not()).scan(0, function(x,y) { return x+y })