Ana içeriğe geç
Modül 7 · Ders 2 ders 4Kurstaki 26/32~12 min
Modül dersleri (2/4)

eşzamansız / bekliyor

async/await Promises ile çalışmak için daha anlaşılır bir sözdizimidir: kod şu şekilde okunur eşzamanlı kod, ancak perde arkasında önceki dersle tamamen aynı Vaatleri kullanıyor.

async function

async her zaman ile bildirilen bir işlev bir Söz döndürür.

JS
async function forty() {
  return 40;
}

forty(); // Promise { 40 }
forty().then((v) => console.log(v)); // 40

"Normal" bir değer döndürseniz bile, işlev bunu çözümlenmiş bir Promise'a sarar.

await

async function içine bir Sözün önüne await koyabilirsiniz: yürütme duraklatıldı Vaat yerine gelinceye kadar, daha sonra çözümlenen değerle devam eder.

JS
async function sum() {
  const a = await Promise.resolve(10);
  const b = await Promise.resolve(20);
  return a + b; // 30
}

.then stilinde eşdeğeri (daha ayrıntılı):

JS
function sum() {
  return Promise.resolve(10).then((a) => Promise.resolve(20).then((b) => a + b));
}

await hataları yayar

Söz reddedilirse, await hatayı yeniden atar. Normal bir şekilde yakalayabilirsiniz try/catch:

JS
async function read() {
  try {
    const x = await Promise.reject(new Error('no'));
    return x;
  } catch (err) {
    return 'error: ' + err.message;
  }
}

read(); // Promise { 'error: no' }

Ok eşzamansız

JS
const double = async (n) => n * 2;
double(5); // Promise { 10 }

Deneyin

Egzersiz#js.m7.l2.e1
Denemeler: 0Yükleniyor…

Bir sayının Sözünü alan ve +1 sayısını (Söz olarak) döndüren bir 'async işlevi addOne(p)' tanımlayın. Beklemeyi kullanın.

Düzenleyici yükleniyor…
İpucu göster

sabit n = p'yi bekliyor; n + 1'i döndür;

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#js.m7.l2.e2
Denemeler: 0Yükleniyor…

'sumTwo(pa, pb)' async'i tanımlayın: iki Promise sayısını alır, toplamlarını döndürür. İki ardışık bekleme kullanın.

Düzenleyici yükleniyor…
İpucu göster

her birini bekleyin, ardından a + b'yi döndürün.

3 denemeden sonra çözüm mevcut