Вы можете попробовать написать анонимную функцию самозапуска с помощью setTimeout
вместо setInterval
:
var i = 0;
(function() {
//stuff
i++;
if (i % 2 == 0) {
//If some condition occurs inside the function, then call itself once again
//immediately
arguments.callee();
} else {
//otherwise call itself in 3 and a half seconds
window.setTimeout(arguments.callee, 3500);
}
})();//<-- call-itself immediately to start the iteration
ОБНОВИТЬ:
Из-за несогласия, выраженной в разделе комментариев, против использования arguments.callee
, вот как это можно было бы сделать, используя именованную функцию:
var i = 0;
var doStuff = function() {
//stuff
i++;
if (i % 2 == 0) {
//If some condition occurs inside the function, then call itself once again
//immediately
doStuff();
} else {
//otherwise call itself in 3 and a half seconds
window.setTimeout(doStuff, 3500);
}
};
doStuff();