Программирование

JavaScript async и await: дождаться ответа

Напиши await перед fetch и json. Ошибку ловят try и catch.

Все уроки · Уроки JavaScript: учимся с нуля

Дождись ответа

Сервер отвечает через 1–2 секунды. Если не ждать, результат будет undefined или Promise. async пишется в начале функции. await ставится только перед fetch и json и не пускает следующую строку раньше времени.

async function numune() {
  const cavab = await fetch(url);
  const melumat = await cavab.json();
}

Отправь вопрос через async

Тот же запрос теперь внутри функции. await стоит в обоих местах: fetch и json. Функция сама не работает, в конце её вызывают по имени. Ключ по-прежнему не пишут на страницу.

const apiKey = "BURAYA_OZ_API_ACARINIZI_YAZIN";
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${apiKey}`;

async function aiSualGonder(sualMetni) {
  const sorguMelumati = {
    contents: [{ parts: [{ text: sualMetni }] }]
  };
  const cavab = await fetch(url, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(sorguMelumati)
  });
  const melumat = await cavab.json();
  const aiMetni = melumat.candidates[0].content.parts[0].text;
  console.log(aiMetni);
}

aiSualGonder("JavaScript-də massiv nədir?");

try и catch

Интернет может пропасть или ключ может быть неверным. Код, который должен работать, пишется в try. Если будет ошибка, программа не останавливается, срабатывает catch.

async function tehlukesizSorgu(sual) {
  try {
    const cavab = await fetch(url, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        contents: [{ parts: [{ text: sual }] }]
      })
    });
    const melumat = await cavab.json();
    console.log(melumat.candidates[0].content.parts[0].text);
  } catch (xeta) {
    console.log("Xəta baş verdi. İnterneti və açarı yoxla.");
  }
}

Вопросы

Почему await даёт ошибку? В начале функции нет async. Они работают вместе.

Почему на экране Promise? Перед cavab.json() нет await. Перед fetch она тоже нужна.

Почему функция не работает? Написать её мало. В конце вызови aiSualGonder("sual").

В чём разница с .then()? async/await пишет ту же работу строка за строкой. Ошибку ловят не отдельной цепочкой catch, а try и catch.

Автор: Nibras Code