Другое решение может быть таким -
Потому что "variable"
меняется по всей программе. Итак, у нас сначала есть BehaviorSubject, который обернет "variable"
как наблюдаемый, и BehaviorSubject будет использоваться для выдачи следующего значения для variable
-
const variable$ = new BehaviorSubject(1); //you can set initial value as per your need
updateVariable(newValue) {
this.variable$.next(newValue);
}
this.variable$.pipe(
switchMap(val => interval(125 * val),
//now apply your various operators chain as per your need
takeWhile(),...
tap(),...
map()...
).subscribe()
Наличие этого параметра обеспечит запуск вашего интервала (с переменной 125 *) для эмиссии каждого нового значения 'variable'
, отменяя предыдущий интервал (switchMap позаботится об этом). Подпишитесь только один раз [нет необходимости повторной подписки].