2015-05-14 20 views

Odpowiedz

8

Można użyć ogólną wrapper stream

var leftKeys = Kefir.stream(function(emitter){ 
    Mousetrap.bind('left', function(e) { 
     emitter.emit(e); 
     console.log(e); 
    }); 
    return function(){ 
     // unbind 
    }; 
}); 

http://jsfiddle.net/be9200kh/1/

+1

Jest to dobry sposób, żeby to zrobić. Również 'emitter.emit' może być przekazane bezpośrednio jako callback -' Mousetrap.bind ('left', emitter.emit) ', chyba że potrzebujesz tego loga oczywiście. –

2

Normalnie można wykorzystać Kefir.fromEvents, ale w przypadku, gdy Mousetrap.js nie wiąże się z użyciem on|off metod, można zamiast po prostu użyj Kefir.pool (Kefir.emitter był przestarzały) i uruchom Kefir w wywołaniach zwrotnych Mousetrap. I zmodyfikowany kod do wykazania za pomocą Kefir.pool w callbacków MOUSETRAP: http://jsfiddle.net/be9200kh/

Zasadniczo, można zrobić

var pool = Kefir.pool(); 
pool.plug(Kefir.constant(1)); 
pool.map(...).filter(etc) 

Miłej zabawy!