Можно «подглядывать» за изменениями свойства объекта.
Предлагаю не переменную
isLoading
, а свойство некого объекта изменять:
flags.isLoading = false;
const PERIOD = 5000;
let timeout;
const action = () => {
console.log('Action!');
// this.switchNextTab()
clearTimeout(timeout);
timeout = setTimeout(action, PERIOD);
};
const flags = {
_isLoading: false,
set isLoading(value) {
this._isLoading = value;
if (!value) {
// isLoading стал false
action();
}
},
get isLoading() {
return this._isLoading;
},
};
timeout = setTimeout(action, PERIOD);
// где-то в коде:
flags.isLoading = true;
// ...
flags.isLoading = false; // тут же выполнится action