RxJs如何观察对象属性的变化

我遇到了一个问题。 我有一个客户端,实例化具有布尔属性。 我想等到它切换到真,然后解决承诺。 我尝试了很多不同的方法,包括while循环,只是完全阻塞线程而不检查更新。

这是尝试

var startClient = function() { return new Promise((resolve, reject)=> { var client = CreateClient(); while(!client.ready) {} resolve(client); }); }; 

我的问题是:有没有办法使用RxJs帮助..也许发射和事件,如果就绪属性更改? 下面是我想要做的更伪代码。

 var startClient = function() { return new Promise((resolve, reject)=> { var client = CreateClient(); var emitter = Observable.watch(client, 'ready'); emitter.on('ready', function(result) { if(result) resolve(client); }); }; 

有什么build议么? 谢谢!

Solutions Collecting From Web of "RxJs如何观察对象属性的变化"

如果可以的话,你可以覆盖客户端上的ready属性来捕获它的分配,如下所示:

 // Check if the ready flag is already set. if (client.ready) return resolve(client); let _ready; Object.defineProperty(client, 'ready', { // Trap an assignment and resolve if true. set(b) { _ready = b; if (b) resolve(client); }, // Politely provider a getter in case someone else is trying to access it. get() { return _ready; } }); 

如果属性不可configuration,或者对象被冻结等,这将不起作用。