Я использую $ httpProvider.interceptors, чтобы поймать запрос 401 или 403, после чего я заканчиваю сеанс и перенаправляю на страницу входа. Существует функция, которая имеет функцию тайм-аут, я хочу, чтобы остановить этот тайм-аут от выполнения, если я получаю 401 или 403 ответ
ответ
Вам нужно сохранить таймер, как this:
var myVar;
function myFunction() {
myVar = setTimeout(function(){ alert("Hello"); }, 3000);
}
function myStopFunction() {
clearTimeout(myVar);
}
Вы можете используйте $timeout.cancel(timer)
, чтобы остановить таймер.
Подробнее об этом здесь в документации: $timeout
Вы должны указать в своем ответе некий контекст и объяснение, а не только ссылку на документацию. Также процитируйте соответствующую часть документации, если ссылка станет недействительной в будущем. См. Http://stackoverflow.com/help/how-to-answer – Duncan
Вы можете отменить тайм-аут довольно легко
var myTimeout = $timeout(function() {}, 1000);
// Check http status code
if (someHttpCode === 401){
// Stop the timeout
$timeout.cancel(myTimeout);
}
Возможность отмены не «из-за того, что она возвращает обещание». В общем, нет возможности отменить обещание, это дополнительная функция, добавленная к обещанию таймаутом. Также стоит отметить последние версии angularjs, которые не требуют, чтобы вы передавали пустую функцию, вы можете просто вызвать '$ timeout (1000)', чтобы получить обещание. – Duncan
@ Duncan Спасибо за исправление, я расскажу об этом – Grant
Я знаю, что мы можем отменить тайм-аут, сохранив его в переменной, я просто хотел узнать, есть ли глобальный метод, который просто удаляет весь ожидающий тайм-аут в один раз, не сохраняя его в любой переменной –
- 1. Бриз с использованием углового перехватчика $ http
- 2. Остановка углового. $ Timeout
- 3. Стоп Углового таймер $ таймаута после удара кнопки назад
- 4. Угловой вид не обновляется после перехватчика http
- 5. Выполнение функции после углового foreach
- 6. Выполнение углового HTTP-вызова многоразового использования
- 7. Выполнение стоп-сценария после установленного времени
- 8. AngularJS: ошибка ввода http-перехватчика
- 9. $ timeout not firing with $ HTTP
- 10. Выполнение стоп-ордера - Drools
- 11. Стоп Двойное выполнение событий
- 12. Выполнение стоп-метода - Swift
- 13. Угловые заголовки ответов перехватчика HTTP
- 14. Как транслировать с http-перехватчика?
- 15. Window.open does't работу в HTTP после углового
- 16. Сброс формы после углового $ http success
- 17. Http request timeout issue
- 18. libcurl http post timeout
- 19. HTTP keep-alive timeout
- 20. HTTP Request Timeout
- 21. AngularJS global $ http timeout
- 22. HTTP URL Connection Timeout
- 23. Django http connection timeout
- 24. Метод углового обслуживания называется дважды?
- 25. connect (таймер, SIGNAL (timeout() ...) функция не называется
- 26. Java http read timeout issue
- 27. Стоп после неудачного теста QUnit.js
- 28. Выполнение углового сканирования - Начало проекта
- 29. углового контроллер не получает называется или инстанцирован
- 30. Игнорировать синхронизацию за $ http, но не $ timeout
, именно поэтому я оставил ссылку на W3? – alexey
Я не знаю, почему вы думаете, что вам нужно выделить его. – alexey
Downvoted, потому что вопрос был явно угловатым, поэтому нецелесообразно использовать 'setTimeout'. – Duncan