0
사용자가 손가락으로 터치하여 움직일 때마다 이벤트를 발생시키는 이벤트 스트림을 만들고 싶습니다. 이벤트에는 사용자가 이동 한 정도에 따라 상대 x 및 y 값이 포함되어야합니다.flapjax를 다루는 방법 사용하지 않는 EventStreams
var extractTouchEvent = function (type) {
return extractEventE(document.body, type).mapE(function(e){
return {left:e.targetTouches[0].pageX, top:e.targetTouches[0].pageY};
});
};
var touchStartE = extractTouchEvent('touchstart');
var touchMoveE = extractTouchEvent('touchmove');
var draggedE = switchE(touchStartE.mapE(function(startValue){
return touchMoveE.mapE(function(moveValue){
return {left:moveValue.left-startValue.left, top:moveValue.top-startValue.top}
})
}));
을하지만 우리는 몇 가지 로깅을 추가하여 수정할 경우 : 다음 코드는 제대로하지
var draggedE = switchE(touchStartE.mapE(function(startValue){
return touchMoveE.mapE(function(moveValue){
var a = {left:moveValue.left-startValue.left, top:moveValue.top- startValue.top};
console.log(a.left);
return a;
})
}));
우리는 switchE 하락에도 불구하고 과거의 모든하는 TouchMove의 EventStreams 여전히 각하는 TouchMove 이벤트를 평가하는 것을 볼 수 있습니다 메서드를 호출하여 결과 이벤트에 대한 최신 EventStream 만 선택합니다. 이러한 방법으로 게으른 평가가 많이 누출되는 것을 피할 수 있습니까?