typescript - 根据方法可用性创建 RxJs observable

标签 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>

最佳答案

如果您需要进行投票,没有比这更好的了。正确的 react 方式是 myObject 在方法准备就绪并且您订阅它时发出一个事件。

关于typescript - 根据方法可用性创建 RxJs observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44679885/

相关文章:

angular - Map 和 Filter 适用于两个数组元素,但在看似相同的第三个元素上失败

javascript - 订阅 onComplete 永远不会用 flatMap 完成

ios - 更改变量中的一个属性会触发对其他属性的订阅。接收 swift

Angular Observable 返回订阅者而不是 JSON

javascript - 带 Handlebars 的 nodemailer 无法正确显示样式

javascript - Typescript/Javascript : mailto with subject, 正文和链接数组

javascript - angular ngrx store 参数化内存选择器

Angular 解决错误错误 : Uncaught (in promise): TypeError: resolver is not a function

java - Observable <boolean> 不返回 java 值

typescript - 如何声明在类型别名中声明的仅一个别名的数组