برمجة

جافاسكريبت async وawait: انتظار الجواب

اكتب await أمام fetch وjson. try وcatch يمسكان الخطأ.

كل الدروس · دروس جافاسكريبت: تعلّم من الصفر

انتظر الجواب

الخادم يتأخر ثانية أو اثنتين. إذا لم تنتظر صارت النتيجة 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؟ لا توجد await أمام cavab.json(). وهي لازمة أيضاً أمام fetch.

لماذا لا تعمل الدالة؟ كتابتها لا تكفي. في النهاية استدعِ aiSualGonder("sual").

ما الفرق عن .then()؟ async/await تكتب العمل نفسه سطراً تحت سطر. الخطأ لا يُمسك بسلسلة catch منفصلة، بل بـ try وcatch.

المؤلف: Nibras Code