В моем компоненте я подписываюсь на такую переменную:
import { Subject, of } from 'rxjs'
....
distance: number
constructor() {
this.distance = 0;
this.getDistance().subscribe(
(newDistanceValue) => {
console.info('newDistanceValue', newDistanceValue)
}
)
....
}
getDistance(): Observable<number> {
return of(this.distance);
}
Я получаю следующий вывод для начального значения переменной.
newDistanceValue 0
... но когда я меняю значение в других методах компонента, подписчик не выводит новое значение расстояния.
Что мне не хватает?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это rxjs, а не rsjx :)
вы создаете новый Observable каждый раз, когда вызываете getDistance, и он выдает только одно значение, которое является текущим значением distance, вместо этого вы должны сделать его BehaviorSubject
import { BehaviorSubject } from 'rxjs'
....
distance$ = new BehaviorSubject(0)
constructor() {
this.distance$.subscribe(
(newDistanceValue) => {
console.info('newDistanceValue', newDistanceValue)
}
)
// or get value of distance synchronously
console.info(this.distance$.getValue())
....
}
foo() {
this.distance$.next(1)
}
Спасибо, я буду стараться.