В настоящее время у меня есть функция, которая выполняет некоторый код в методе setInterval
. Это работает как ожидалось. Проблема в том, что я условно выполняю код внутри этого таймера. Если условие не выполнено, он все равно будет ждать таймаут, пока не попытается снова. Есть ли способ «пропустить» задержку и выполнять ее только при выполнении условия.skip timer в интервале JavaScript
Вы заметите, что в моей демонстрации есть длительная задержка между выводом результатов 4 и 8 пунктов (как задержка между проверками). Я бы хотел, чтобы на протяжении всей процедуры была последовательная задержка.
DEMO https://jsfiddle.net/jdec4h0x/
var intAdd = setInterval(function() {
refIndex++
if(refIndex >= predefinedMaxLimit) {
refIndex = 0;
loopedThrough = true;
}
// if this exists then increment refIndex and try again
if (loopedThrough || !$(".myclass[data-mydata1='" + predefinedData2 + "'][data-mydata2='" + refIndex + "']").length) {
counter++;
$('p').last().after('<p>IN Cond Ref = ' + refIndex + '</p>');
// ** js code within this tiemout **
if (counter >= predefinedOutputP) clearInterval(intAdd);
}
}, 500);
Конечно, просто отменить таймер и сделать новый с вашей новой задержки. –
Почему downvote? –
@KevinB это не сработает. Таймер выходит за рамки https://jsfiddle.net/jdec4h0x/1/. –