⊗jsSpPrmSS 174 of 294 menu

JavaScript'te Senkron Tarzda Promise'ler

Promise hell sorununu çözmek için, asenkron kodu çok daha kolay bir şekilde - senkron tarzda - yazmamızı sağlayan özel bir promise sözdizimi bulunmuştur.

Hadi onu incelemeye başlayalım. İlk olarak önceki dersteki kodu alalım:

function func() { getSmth(2).then(res => { console.log(res); // 4 yazacak }); } func();

Eğer getSmth fonksiyonumuz senkron olsaydı, func fonksiyonunun kodunu aşağıdaki şekilde yeniden yazabilirdik:

function func() { let res = getSmth(2); console.log(res); // 4 yazacak }

Ancak, getSmth fonksiyonu asenkron olduğu için yukarıdaki kod çalışmaz. Fakat, senkron tarzda promise'leri kullanarak buna benzer bir şey elde edebiliriz. Bunu yapalım.

İlk olarak, func fonksiyonumuzu özel bir komut olan async ile asenkron olarak bildirmeliyiz:

async function func() { }

Bundan sonra, func fonksiyonunun içinde özel bir komut olan await kullanabileceğiz. Bir promise'in önüne yazılan bu komut, JavaScript'in promise tamamlanana kadar beklemesini sağlar. Ardından komut promise'in sonucunu döndürür ve kodun yürütülmesi devam eder.

Bizim durumumuzda, getSmth çağrısının önüne await yazmalıyız. Bu fonksiyonun çağrısının sonucu bir promise olduğu için, kodun devamının yürütülmesi sadece bu promise tamamlandıktan sonra devam edecektir. Ve promise'in sonucu bir değişkene yazılabilir. Anlatılanı yapalım:

async function func() { let res = await getSmth(2); console.log(res); // 4 yazacak } func();

Hadi getSmth fonksiyonunu birkaç kez çağıralım:

async function func() { let res1 = await getSmth(2); let res2 = await getSmth(3); console.log(res1 + res2); // 13 yazacak } func();

Şimdi de getSmth fonksiyonunu bir döngü içinde çağıralım:

async function func() { let arr = [1, 2, 3, 4, 5]; let sum = 0; for (let elem of arr) { sum += await getSmth(elem); } console.log(sum); } func();

Aşağıdaki kodu senkron sözdizimi ile yeniden yazın:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet