Я хочу отправить http-запрос с использованием axios, когда происходит событие документа pagehide. Интересно, можно ли узнать, что axios успешно отправлен, поскольку запрос является асинхронным? Или есть способ сделать запрос синхронным? Я пишу образец кода ниже.
document.addEventListener("pagehide", function () {
sendRequest();
})
sendRequest() {
axios.get('/targetUrl', params).then();
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я в какой-то степени решаю это ... Я использую sendBeacon, когда это возможно, а для некоторых браузеров, которые не поддерживают API маяка, я использую синхронный запрос.
Вы можете просто вернуть ответ «ОК» (код состояния 200), который укажет вам, что запрос был отправлен успешно.
Я не уверен в синхронном запросе, но вы можете просто использовать:
axios.get('/targetUrl', params);
Это отправит желаемый сигнал. Если вы хотите дождаться ответа, вы можете использовать обещания. В случае, если сервер возвращает ответ кода 4xx, axios выдаст ошибку, вы можете использовать axios внутри блока try-catch для обработки, если есть ошибка.
async function sendRequest() {
try {
await axios.get('/targetUrl', params);
}
catch (Error)
{
if (Error.IsAxios) // This will return true if error is due to axios
{
alert('Request was not successful');
}
else
{
console.error(Error.toString());
}
}
}