2016-02-03 4 views
0

Я использую setInterval для обновления статистики пользователей группой людей на сайте. Если это 403s, это означает, что группа вышвырнула парня, и я не считаю разумным просто отправлять запросы, так как чтобы вернуться в указанную группу, пользователь должен был бы согласиться на что-то на странице своего профиля. Итак, скажите, что у меня есть:Javascript: неустановленный интервал изнутри функции интервала?

setInterval(function() { 
    $.ajax({ 
    method: 'GET', 
    url: '/api/retreivestats', 
    success: function(data) { 
     //update the page with the new stats 
    }, 
    error: function(errorObj) { 
     if (errorObj.status == 403) { 
     //someone took away the users perms to retrieve stats, unset the interval 
     } 
    } 
    }); 
}, 30000); 

Как использовать фактический выход из этого интервала из функции ошибки?

+1

Вы можете использовать clearinterval http://www.w3schools.com/jsref/met_win_clearinterval.asp –

ответ

2

Установить переменную и присвоить setInterval к нему и использовать clearInterval

https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval

var interval = setInterval(function() { 
    $.ajax({ 
    method: 'GET', 
    url: '/api/retreivestats', 
    success: function(data) { 
     //update the page with the new stats 
    }, 
    error: function(errorObj) { 
     if (errorObj.status == 403) { 
     //someone took away the users perms to retrieve stats, unset the interval 
     clearInterval(interval); 
     } 
    } 
    }); 
}, 30000); 

интервал - идентификатор повторного действия, которое вы хотите отменить. Этот идентификатор возвращается из setInterval().

2

Вы просто сохранить ссылку на интервале, а также использовать clearInterval

var myInterval = setInterval(function() { 
    $.ajax({ 
    method: 'GET', 
    url: '/api/retreivestats', 
    success: function(data) { 
     //update the page with the new stats 
    }, 
    error: function(errorObj) { 
     if (errorObj.status == 403) { 
      clearInterval(myInterval); 
     } 
    } 
    }); 
}, 30000); 
Смежные вопросы