根据方法可用性创建RxJs observable

时间:2017-06-21 15:08:24

标签: typescript rxjs observable

我想在Angular 4应用程序中使用RxJs observable和TypeScript执行之前等待方法可用性。

到目前为止,我想出了intervalskipWhile结合使用,但我想知道是否有更好的方法来观看"观看"它的方法是可用而不是每100毫秒观看

 Observable
    .interval(100)
    .skipWhile(() => myObject.myFunction == null)
    .first()
    .subscribe(() => myObject.myFunction());

我对Observable很陌生,所以欢迎任何见解!



// create element without sayHello function
const myElement = {};

// add method sayHello after 1000ms that show an alert
setTimeout(() => myElement.sayHello = () => alert('Hello'), 1000);

// watch every 100ms if sayHello function exist before to execute it
Rx.Observable
  .interval(100)
  .skipWhile((interval) => {
    const isUndefined = myElement.sayHello == null;
    write(interval, isUndefined);
    return isUndefined;
  })
  .first()
  .subscribe(() => myElement.sayHello());

// function to write result to DOM
const write = (interval, isUndefined) => {
  const node = document.createElement("DIV");
  const textnode = document.createTextNode('interval #' + interval.toString() + ' - sayHello is ' + (isUndefined ? 'UNDEFINED' : 'DEFINED'));
  node.appendChild(textnode);
  document.body.appendChild(node);
};

<script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-beta.8/dist/global/Rx.umd.js"></script>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

如果你需要进行民意调查,你就不能做得更好。当方法准备好并且您订阅它时,正确的反应方式是myObject发出事件。