Получение текущего значения счетчика, используемого в setInterval JavaScript

#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