Rx js如何重用运算符

时间:2016-11-01 09:45:41

标签: javascript rxjs

我正在使用Rx,我有两个使用相同运算符的点击流。 如何提取相同的部分并重复使用?

$(".scrollAnchor").click(function(e){
    e.preventDefault();
    anchorDestination = $(this).data("anchor-dest");
    smoothScrollTo(anchorDestination);
});

function smoothScrollTo(element)
{
    $("html, body").stop().animate({
        scrollTop: $(element).offset().top
    }, 1000);
}

我想提取这个:

let gender$ = Rx.Observable.fromEvent(gender, 'click').map(e => e.target).filter(t => t.nodeName === "LI").map(li => li.textContent.trim())

let type$ = Rx.Observable.fromEvent(type, 'click').map(e => e.target).filter(t => t.nodeName === "LI").map(li => li.textContent.trim())

let combine$ = Rx.Observable.combineLatest(
  gender$,
  type$
)

1 个答案:

答案 0 :(得分:0)

const getTextFromLis = stream$ => stream$.map(e => e.target).filter(t => t.nodeName === "LI").map(li => li.textContent.trim());

let gender$ = getTextFromLis(Rx.Observable.fromEvent(gender, 'click'));

Rx的链接部分意味着调用.map().filter()会为您提供一个新流,您可以将其传递给函数或从函数返回。