Отличие между обычным вызовом и await вызовом внутри асинхронной функции

Всем доброго дня. Прошу по мере возможности наглядно обрисовать разницу между вызовом обычной процедуры и await-функции внутри асинхронной функции. Для примера. Есть async функция sendMail, навешанная на submit формы и производящая валидацию данных на форме и последующую отправку их в ajax-запросе на сервер. Так вот вызов функции валидации происходит обычным способом, а ajax-вызов fetch идет как await. Я не понимаю, в чем принципиальное различие вариантов вызова этих функций? Если от вызова fetch мы уберем await, или добавим await к вызову процедуры валидации, что изменится в порядке выполнения скрипта?

async function formSend(e) {
    e.preventDefault();

    // 1. валидация формы
    let error = formValidate(form);

    // 2. сбор данных с формы + прикрепление изображения
    let formData = new FormData(form);
    formData.append('image', formImage.files[0]);

    if (error === 0) {
      form.classList.add('_sending');

      // AJAX-запрос к серверу
      let response = await fetch('sendmail.php', {
        method: 'POST',
        body: formData
      });

      if (response.ok) {
        let result = await response.json();
        alert(result.message);
        formPreview.innerHTML = '';
        form.reset(); 
        form.classList.remove('_sending');
      } else {
        alert('Ошибка отправки данных');
        form.classList.remove('_sending');
      }
    } else {
      alert('Заполните обязательные поля');
    }

Всем заранее спасибо за ответы.


Ответы (0 шт):