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.
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.
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ı):
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:
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
const double = async (n) => n * 2;
double(5); // Promise { 10 }Deneyin
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.
İ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
'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.
İpucu göster
her birini bekleyin, ardından a + b'yi döndürün.
3 denemeden sonra çözüm mevcut