2016-12-15 6 views
0

Я использую для разработки моего интерфейса OpenUI5 и не поддерживает rxjs.Создание вручную наблюдаемых

Например, я хочу слушать пресс кнопку от OpenUI5 события и не могли бы сделать, как

var source = Rx.Observable.fromEvent(input, 'press'); 

var subscription = source.subscribe(
    function (x) { 
    console.log('Next: Clicked!'); 
    }, 
    function (err) { 
    console.log('Error: %s', err); 
    }, 
    function() { 
    console.log('Completed'); 
    }); 

Поскольку элемент управления Button не реализует слушателя событий.

Так что я должен создать Observable самостоятельно, как создать горячую Наблюдаемую?

+0

Вы можете уточнить, что вы пытаетесь достичь? Для событий, обертывающих их в 'fromEvent', отличный подход (и' subscribe' делает их горячими) –

+0

Я хочу достичь, чтобы обработать событие пресса с помощью rxjs. https://sapui5.netweaver.ondemand.com/docs/api/symbols/sap.m.Button.html#attachPress –

ответ

0

Если fromEvent не работает для вас, или, например, вы хотите подключить несколько событий к одному потоку вы можете сделать что-то вроде этого:

function mouseAllTheThingsStream(){ 
    const target = document.getElementById('#content'); 
    return Rx.Observable.create(observer => { 
    target.onmousemove(evt => observer.onNext(evt)); 
    target.onmousedown(evt => observer.onNext(evt)); 

    window.setTimeout(() => observer.onCompleted(), 30 * 1000); 

    return() => { 
     // cleanup; unsubscribe from events manually 
    } 
    }); 
} 
+0

'window.setTimeout (() => observer.onCompleted(), 30 * 1000);' что это для? –

+0

Чтобы привести пример завершения для вашего настраиваемого наблюдаемого –

+0

, почему я должен его закончить? –

Смежные вопросы