Как повторить метод beforeSend из jQuery Ajax на чистом JS?

У jQuery Ajax есть метод beforeSend, который позволяет манипулировать с домом, пока идет отправка каких либо данных. Так же у React есть хук useState который в случае если у него есть асинхронные вызовы, он выкидывает isLoading в то время когда делает запрос на бэк. Так вот как можно это сделать на чистом JS?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 2
wapster92
@wapster92 Куратор тега JavaScript
Просто перед запросом меняешь состояние и после получения ответа возвращаешь.
const getFn = async () => {
  let loading = true;
  try {
    // Некий проммис
  } catch (e) {
    // Обработка ошибки
  } finaly {
    loading = false;
  }
}

Соответственно вместо loading можно использовать, что угодно. И в finaly вставлять не обязательно, можно уже в ошибке некий код обрабатывать, в зависимости от результата запроса что-то делать. Показал частый пример
Ответ написан
Aleksandr-JS-Developer
@Aleksandr-JS-Developer
Лучше проще, чем никогда
JS не может проверить, отправлен ли сейчас сетевой запрос.
Поэтому, нет такого "времени, пока идёт запрос".
Но вы можете, как писали выше, сначала установить состояние в loading, потом отправить запрос.
Теперь, пока идёт запрос, можно что-то показывать пользователю.
Потом, когда пришел ответ (правильный или нет), меняете в состоянии статус с loading на loaded, к примеру.
Я, когда писал такое, имел в состоянии поле status, которое принимало четыре значения - 'did_not_load', 'loading', 'loaded_ok', 'loaded_error'.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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