gpt4 book ai didi

node.js - RxJs 如何观察对象属性变化

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:58 25 4
gpt4 key购买 nike

我遇到了一个问题。我有一个实例化具有现成 bool 属性的客户端。我想等到它切换为 true 然后解决 promise 。我尝试了很多不同的方法,包括 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);
});
};

有什么建议吗?谢谢!

最佳答案

如果可以的话,您可以覆盖客户端上的 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; }

});

如果属性不可配置,或者对象被卡住等,这将不起作用。

关于node.js - RxJs 如何观察对象属性变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38189134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com