Достать или считать? js - setInterval

242
27 февраля 2017, 13:59

Есть ли способ узнать количество итераций функции setInterval без использования дополнительной переменной?

Чтобы вместо

var count = 0;
setInterval(function(){count++;},1000);

было как

var iid = setInterval(function(){console.log("hello world");},1000);
//проходит некоторое время
var count = getIntervalCount(iid);
Answer 1

Думаю, что стандартных средств нет. Но всегда можно написать свои обёртки:

function mySetInterval(func, tmt){
    var retObj={"counter":0};
    retObj["realInterval"]=
    setInterval(function (){retObj.counter++; func();}, tmt);
    return retObj;
}
function myClearInterval(obj){
    clearInterval(obj.realInterval);
}
function getIntervalCount(obj){
    return obj.counter;
}

Если нужны дополнительные параметры, передаваемые в функцию, можно изменить функцию mySetInterval так:

function mySetInterval(func, tmt, ...args){
    var retObj={"counter":0};
    retObj["realInterval"]=
    setInterval(function (){retObj.counter++; func(...args);}, tmt);
    return retObj;
}
READ ALSO
Вычитание дат и времени в Js

Вычитание дат и времени в Js

Есть такая задача: есть определенная дата, например 2502

427
Не сохраняется с первого раза ckeditor

Не сохраняется с первого раза ckeditor

Не сохраняется с первого раза ckeditorСмотрел данную тему на форуме, не смог разобраться

283
Модифицировать код под Internet Explorer [требует правки]

Модифицировать код под Internet Explorer [требует правки]

Уважаемые знатоки JS и IE! Изображения случайно перемешиваются при кликах в строго заданном порядке: например, только при кликах в определённой...

261