Я пытаюсь понять рабочий процесс из ответов Axios, и я хотел бы, чтобы кто-то мог исправить меня, если следующее объяснение неверно в любом месте.
У меня есть этот пример кода от axios, и я хотел бы правильно понять функциональность этих методов '.then' и '.catch'.
return this.$axios.$get(`controllerName/methodController`)
.then(response => {
console.log("then1");
console.log(response);
}, ({response}) => {
console.log("then2");
console.log(response);
})
.catch(error => {
console.log("catch");
console.log(error)
});
},
Я провел некоторое тестирование, создавая различные ситуации, отправляя разные ответы из предыдущего приложения, в данном случае сборку с Laravel. Например:
Случаи тогда1:
- Если я только что добавил в первой строке контроллера (), он получает
200
код состояния.
- Если я верну это ->
return response()->json('message');
, он получит 200
код состояния.
Случаи тогда2:
- Если я не объявляю маршрут во внутреннем приложении, которое обрабатывает этот запрос, я вижу
'then2' log
, а код состояния из ответа - это 404
код состояния.
- Если внутри контроллера возникает какое-то исключение, я отправляю тот же ответ throw
return response()->json('message');
, но добавляю другой код состояния, такой как return response()->json('message', 404);
, поэтому, добавляя код состояния, отличный от 200, который является кодом по умолчанию, к которому он идет зона then2.
- Если я не запишу это исключение, как в предыдущем случае, заменив ответ возврата () ... он получит
500
код состояния.
Случаи вылова:
Я не смог воспроизвести ни одного случая из случаев улова, но я думаю, что:
- если сервер не предоставит ответ через какое-то время, он пойдет туда?
- если в коде javascript внутри этого случая он получит ошибку, он перейдет к случаю перехвата.
Вопросы:
Почему он получает два разных «тогда»? Я должен был сохранить это таким образом, чтобы иметь возможность идентифицировать нормальный ответ из ответа об исключении ... но не уверен, почему на самом деле. Было бы неплохо понять это поведение.
Какие случаи могут быть зафиксированы событием catch? Я забыл какой-либо случай в тогдашнем событии из тех, что я описал, которые могут быть интересны для рассмотрения, а?