ES7 ile hayatımıza giren async/await nedir?
Temel olarak; çalıştırılan fonksiyonun işi tamamen bitene kadar bir sonraki kodun çalışmasını engelleyen yapıdır.
Bilindiği üzere javascript senkron bir yapıya sahiptir. Özellikle xhr, fetch gibi işlemler yaparken sunucudan yanıt gelmeden, yani fetch işlemi bitmeden alt satırdaki kodu çalıştırdığı için çok ciddi sorunlar yaşarız. ES7'den önce bu sorunu callback yöntemleri ile hallederdik. Ama bu da iç içe bir sürü fonksiyon yazmamıza sebep olurdu. İşte asenkron programlama bu yüzden yükümüzü ciddi anlamda hafifletti.
await operatörü bir promise beklemek için kullanılır. Yalnızca async function içinde kullanılabilir.
Yapacağımız örnekte bir fetch işlemi yapacağız. Fetch/xhr tamamlanmadan önce başka bir kodun çalışmasına izin vermeyeceğiz
var token = null;
// Sunucudan kullanıcının token bilgisini çekelim
async function tokenget(){
const response = await fetch('https://swapi.co/api/people/')
const data = await response.json()
return data;
}
//Bundan sonraki bütün javascript kodlarınız bu blokta olursa, kullanıcı token verisi gelmeden hiç bir çalışmayacaktır
(async () => {
console.log(token, "Beklemeden yazdırılan veri null olacaktır")
token = await tokenget();
console.log(token);
})()