简体   繁体   English

创建手动可观察

[英]Creating manually observable

I am using for my frontend development OpenUI5 and it does not support rxjs. 我正在使用前端开发OpenUI5 ,它不支持rxjs。

For example, I want to listen the press Button from OpenUI5 event and could not do like 例如,我想听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');
  });

Because the Button control does not implement event listener. 因为Button控件没有实现事件侦听器。

So I have to create Observable on my own, how to create a hot Observable? 所以我必须自己创建Observable,如何创建热的Observable?

If fromEvent does not work for you, or for instance you want to wire multiple events to the same stream you can do something like this: 如果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
    }
  });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM