@NewSantaClaus

Почему axios не работает с AbortController?

Есть некий кусок кода
const controller = new AbortController()
      try {
         const response = await fetch('/api/job', {
           signal: controller.signal
         })
        console.log(response)
      } catch (e) {
        // TODO: 
      }


он работает, и при когда в другом месте вызываю controller.abort() то запрос прекращается что хорошо видно в нетворке.

Но, когда вместо fetch использую axios то запрос не прекращается при вызове controller.abort(). При этом весь остальной код я не меняю, он аналогичен первому.

Не работает вот так:
const controller = new AbortController()
      try {
         const response = await axios.get('/api/job', {
           signal: controller.signal
         })
        console.log(response)
      } catch (e) {
        // TODO: 
      }


Почему так? Как заставить axios тоже прекращать запрос?
  • Вопрос задан
  • 256 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
При остановке запроса Promise отреджектится,
что в сахаре async..await равносильно throw

Т.е. попадёт в блок catch.

Ну и проверьте версию axios – поддержка AbortController там с v.0.22.0
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы