我想在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>
&#13;
答案 0 :(得分:0)
如果你需要进行民意调查,你就不能做得更好。当方法准备好并且您订阅它时,正确的反应方式是myObject
发出事件。