У меня есть инъекционная служба, которая выполняет BLE сканирует и передает результаты через наблюдаемый компонент страницы, где он затем сохраняется в локальной переменной и отображается (теоретически).Угловые 2 и RxJS Наблюдаемые только обновления по таймауту
Проблема в том, что обновления, исходящие из метода startScanWithOptions
, не приводят к обновлению представления, в то время как обновления из метода setInterval
действительно вызывают обновление представления. Обновление превращает его в компонент страницы, поскольку все обновления записываются в консоль, но не отображаются до тех пор, пока обновления setInterval
не вызывают рендер.
От инъекционной службы:
start() {
this.connections$ = new Observable((observer) => {
if (this.blePlugin) {
this.blePlugin.startScanWithOptions(
[],
{ reportDuplicates: true },
(result) => this.observableScanResult(result, observer)
);
}
setInterval(()=>{this.observableScanResult({rssi: 100}, observer)}, 1000);
});
return this.connections$;
}
private observableScanResult(result, observer) {
observer.next(result);
}
От компонента страницы:
private startSelection() {
console.log('Scan Starting');
this.connectionSource = this.connection.start();
this.connectionSub = this.connectionSource.subscribe((result) => {
this.test.push(result.rssi);
console.log(this.test);
});
}