Как обратиться к внешней переменной из функции в setTimeout
Код выглядит примерно вот так:
() => {
let delay = 1000;
let timerId = setTimeout(function request() {
Promise.all(
// здесь что-то делаем
)
.then(() => {
// и здесь хотим перезапустить setTimeout вот таким путем
timerId = setTimeout(request, delay)
})
}, delay)
}
VS Code говорит, что timerId объявлен, но нигде не используется. При этом к delay у него претензий нет.
В чём проблема с видимостью timerId?
Как перезапустить setTimeout?
Ответы (1 шт):
Автор решения: Suvitruf - Andrei Apanasik
→ Ссылка
С timerId проблем нет, но в вашем случае оно вообще ни к чему, т. к. вы нигде его не используете, а только присваиваете.
Скажем, на такой код VS Code ругаться не будет:
() => {
let delay = 1000;
let timerId = setTimeout(function request() {
Promise.all(
// здесь что-то делаем
)
.then(() => {
// и здесь хотим перезапустить setTimeout вот таким путем
timerId = setTimeout(request, delay)
})
}, delay);
console.log('timerId', timerId);
}
Результат создания таймера нужен лишь если вы хотите его подчищать потом через clearTimeout. Если вам оно не надо, то и присваивание в timerId не нужно.