Почему catch в промисе axios выполняется всегда?

axios
			.post(options.url, options.sendata)
			.then(procResponce)
			.catch(procError)
			.finally(procFinal);

Я ожидаю, что procResponce будет выполнятся в случае успеха, procFinal всегда, procError в случае возникновния ошибки.
Однако у меня procError выполняется всегда так же как и procFinal.
При этом на вход procError, в случае если все нормально, поступает пустой объект.

Это нормально вообще?
  • Вопрос задан
  • 307 просмотров
Пригласить эксперта
Ответы на вопрос 1
Edheldor
@Edheldor
А как у вас на вход функций что-то поступает?

Если так:
axios
      .post(options.url, options.sendata)
      .then(procResponce(response))
      .catch(procError(error))
      .finally(procFinal());

Тогда все выполняется в момент создания промиса.

Вам нужно что-то в таком стиле
axios
        .post(options.url, options.sendata)
        .then((response) => {
          procResponce(response)
        })
        .catch((error) => {
          procError(error)
        })
        .finally(() => {
          procFinal()
        })
  },


Или в таком, если никакие аргументы в функции передавать не нужно
axios
        .post(options.url, options.sendata)
        .then(() => {
          procResponce()
        })
        .catch(() => {
          procError()
        })
        .finally(() => {
          procFinal()
        })
  },
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы