Проблема лучше всего объясняется кодом:
var myinterval = setInterval(function() {
$.ajax({
data: data
url: url,
success: function(data) {
if (data) { /* I want to clear current interval */ }
else { /* let it firing ajax requests further */ }
}
});
}, 1000);
Итак, я хочу запускать ajax-запросы каждую секунду, чтобы проверить, изменился ли статус «что-то». И если это что-то изменилось правильно, я хочу перестать проверять это. По сути, я спрашиваю, как мне сделать это наилучшим и наиболее понятным способом.
То, что я делал раньше, уродливо:
window.x = {
'debug' : document.location.host.indexOf('.ru') != document.location.host.length - 3
};
var setItem = function(i,v) {
if (window.x['debug'] && typeof window.x[i] != 'undefined' && typeof console != 'undefined' && window.x[i] != v)
console.log('Value of item ' + i + ' has changed from ' + window.x[i] + ' to ' + v)
window.x[i] = v
};
var getItem = function(i) {
if (window.x['debug'] && typeof window.x[i] == 'undefined' && typeof console != 'undefined')
console.warn('Value of item ' + i + ' is undefined (maybe was not set?)')
return window.x[i]
};
Итак, да, я занял глобальный x
здесь (это мое временное хранилище). Теперь я могу установить свой интервал var
на x
:
setItem('myinterval', myinterval);
внутри функции успеха я могу получить этот интервал:
getIntem('myinterval');
и остановите это:
clearInterval(getItem('myinterval'));
Но это действительно ужасно, не так ли?
Какой лучший лучший способ сделать это?