#javascript #callback #setinterval
Вопрос:
Предположим, я определяю следующую функцию
export const startMoving = () => {
let counter = 0;
var intervalId = setInterval(() => {
// Do something…
counter ;
}, 1000);
return intervalId;
};
Хотя «счетчик» определен с помощью let в функции, он работает, но мой вопрос в следующем: как мне получить значение «счетчик» через некоторое время?
Рафаэль
Комментарии:
1. объявите счетчик за пределами
startMoving
и экспортируйте его также2. @Bravo, который ограничит использование функции / счетчика только одним
startMoving
вызовом3. @CertainPerformance — верно, но код, как показано, вряд ли будет вызван более одного раза. Поскольку он не принимает аргументов, он будет выполнять одно и то же при каждом вызове
Ответ №1:
Возвращает не только идентификатор интервала, но и функцию, которая возвращает текущее значение counter
.
const startMoving = () => {
let counter = 0;
var intervalId = setInterval(() => {
// Do something…
counter ;
}, 1000);
return [intervalId, () => counter];
};
const [intervalId, getCounter] = startMoving();
document.body.addEventListener('click', () => document.body.textContent = getCounter());
click here
Комментарии:
1. Мне нужно сохранить значение в переменной, поэтому я сделал: const [anIntervalId, getCounter] = StartInterval(адресация) anInterval в порядке, но getCounter нет, когда я консолю.log(getCounter ()), он говорит 0.
2. Вам нужно будет подождать по крайней мере одну секунду , прежде чем звонить
getCounter
, иначе он вернет 0