我想在 Angular 4 应用程序中使用 RxJs observable 和 TypeScript 执行之前等待方法可用。
到目前为止,我想到了将 interval
与 skipWhile
结合使用,但我想知道是否有更好的方法来“观察”它的方法可用而不是每 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/