Использую axios для отправки запросов во vue.js 2 в laravel 5.7. В bootstrap.js
(точке, где подключаются основные библиотеки - axios, twitter bootstrap и др) я для axios регистрирую общее поведение при отправке, ответе и ошибке:
axios.interceptors.request.use((config) => {
console.log('Отправлен запрос...');
return config;
}, (error) => {axios_error(error)});
axios.interceptors.response.use((response) => {
console.log('Получен ответ.');
return response.data;
}, (error) => {axios_error(error)});
function axios_error(error) {
console.log('Ошибка запроса axios');
return Promise.reject(error);
}
Далее (как в документации) использую следующую конструкцию, чтобы дождаться ответ на запрос, а уже после выполнять остальные инструкции.
async createPerson(person) {
try {
let response = await axios.post('/people', person);
this.setPersonData(response);
} catch (error) {
console.error(error);
}
},
Видно, что вся конструкция обёрнута в try-catch
. Однако неожиданно оказывается, что если запрос завершается ошибкой (код 422, например), то this.setPersonData(response);
, будет выполнено.
Почему? И как прервать выполнение при ошибке?
Мой вариант такой:
async createPerson(person) {
let response = await axios.post('/people', person);
if (response) {
this.setPersonData(response);
}
},
У вас синтаксис не правильный
(error) => {axios_error(error)}
По сути ничего не сделает, потому что функция сама ничего не вернет. То что вы вызвали Promise.reject
еще ничего не значит
(error) => axios_error(error)
Так уже фунция ошибки вернет axios
именно reject
, что должно вызвать всплытие ошибки
Просто передайте функцию. Ваша конструкция стрелочной функции не возвращает результат.
axios.interceptors.response.use((response) => {
console.log('Получен ответ.');
return response.data;
}, axios_error);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Итак, я пытаюсь написать программу, запускающую N Promise с потоком в k Promise параллельноПроблема в том, что при запуске без yield sleep 1 программа запускает...
Как задать срок хранения ключа? как предотвратить появление модального окна после закрытия а потом октрытия браузера?
Нужна помощь с jsЕсть таблица, по нажатию кнопки все элементы строки попадают в массив