阻塞当前线程 RXJS
Block current thread RXJS
我有 return 可观察的方法,像这样:
public getCpuUsage(): Observable<string> {
return Observable.create((observer: Observer<string>) => {
let plugin = new Plugin();
plugin.open();
plugin.OnEvent = (info: string, ack: string, nak: string) => {
console.log("CPU [" + info + "].param1[" + ack + "].param2[" + nak + " ]");
observer.next(info);
plugin.close();
observer.complete();
};
plugin.executeCommand('getCPUUsage');
});
}
对象插件在传递有关 cpu 的信息时有回调。工作正常。
其他class可以这样调用这个方法:
public executeInfo(): string {
this.getCpuUsage()
.subscribe({
next: (infoAboutCpu) => {
console.log(" Result: " + infoAboutCpu);
return infoAboutCpu;
}
});
console.log('Call this line');
return '-1';
}
在日志中看到:
第一条日志:'Call this line'
第二个日志(1-2 秒后,因为调用了回调):'Result: ${value_cpu_info}'
如何阻塞当前线程,直到从 Observable 获得结果?方法 executeInfo() 必须 return 正确的值。
Block current thread RXJS
JavaScript 中只有 1 个线程。您可以使用
阻止它
while(true) {
// insert break logic here
}
但我强烈建议您重新考虑该要求。
我有 return 可观察的方法,像这样:
public getCpuUsage(): Observable<string> {
return Observable.create((observer: Observer<string>) => {
let plugin = new Plugin();
plugin.open();
plugin.OnEvent = (info: string, ack: string, nak: string) => {
console.log("CPU [" + info + "].param1[" + ack + "].param2[" + nak + " ]");
observer.next(info);
plugin.close();
observer.complete();
};
plugin.executeCommand('getCPUUsage');
});
}
对象插件在传递有关 cpu 的信息时有回调。工作正常。
其他class可以这样调用这个方法:
public executeInfo(): string {
this.getCpuUsage()
.subscribe({
next: (infoAboutCpu) => {
console.log(" Result: " + infoAboutCpu);
return infoAboutCpu;
}
});
console.log('Call this line');
return '-1';
}
在日志中看到:
第一条日志:'Call this line'
第二个日志(1-2 秒后,因为调用了回调):'Result: ${value_cpu_info}'
如何阻塞当前线程,直到从 Observable 获得结果?方法 executeInfo() 必须 return 正确的值。
Block current thread RXJS
JavaScript 中只有 1 个线程。您可以使用
阻止它while(true) {
// insert break logic here
}
但我强烈建议您重新考虑该要求。