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.