Node.js'deki eşzamansız programlama, işlevselliğinin temel bir parçasıdır ve engellemeyen işlemleri ve verimli performansı sağlar. ES2017'de tanıtılan async/await sözdizimi, geliştiricilerin eşzamansız kod yazma biçiminde devrim yaratmıştır.
NodeJs'i Anlayın
Node.js, JavaScript kodunu bir web tarayıcısının dışında çalıştırmanıza olanak tanıyan bir JavaScript çalışma zamanı ortamıdır. Node.js, Google Chrome V8 JavaScript motorunu temel alır ve özellikle veri yoğun ve gerçek zamanlı uygulamalar olmak üzere web uygulamaları oluşturmak için kullanılır. Node.js ayrıca projelerinize işlevsellik eklemek için kullanabileceğiniz geniş bir modül ve paket kütüphanesine sahiptir. Node.js'in bazı faydaları şunlardır:
- Eşzamansız ve olay odaklı doğası sayesinde hızlı ve ölçeklenebilirdir.
- Çapraz platform ve açık kaynaktır, yani çeşitli işletim sistemlerinde çalıştırabilir ve geliştirilmesine katkıda bulunabilirsiniz.
- Hem ön uç hem de web uygulamanızın arka ucu için aynı dili kullanabildiğiniz için tutarlı ve birleştirilmiştir.

Promise'ler Nelerdir?
JavaScript'te, bir Promise, bir eşzamansız işlemin nihai tamamlanmasını (veya başarısızlığını) ve bunun sonucunda ortaya çıkan değeri temsil eden bir nesnedir. Bir eşzamansız işlemle daha eşzamanlı çalışmanıza olanak tanır. İşte bir Promise'in ne olduğuna ve nasıl çalıştığına dair bir özet:
Durumlar: Bir Promise şu durumlardan birindedir:
pending
: İlk durum, ne yerine getirilmiş ne de reddedilmiş.fulfilled
: İşlem başarıyla tamamlandı.rejected
: İşlem başarısız oldu.- Kullanım: Bir eşzamansız eylemin nihai başarı değeri veya başarısızlık nedeni ile işleyiciler ilişkilendirebilirsiniz. Bu, eşzamansız yöntemlerin eşzamanlı yöntemler gibi değerler döndürmesini sağlar: nihai değeri hemen döndürmek yerine, eşzamansız yöntem, değeri gelecekte bir noktada sağlamak için bir promise döndürür.
- Yerleşme: Bir promise, yerine getirilmiş veya reddedilmişse ancak beklemede değilse yerleşmiş olarak kabul edilir. Bekleyen bir promise'in nihai durumu, bir değerle yerine getirilmiş veya bir nedenle (hata) reddedilmiş olabilir.
Bir Async Fonksiyon Nasıl Bildirilir
JavaScript'te bir async
fonksiyonu bildirmek oldukça basittir. Fonksiyon bildiriminin önüne sadece async
anahtar kelimesini eklemeniz yeterlidir. Bu, fonksiyonun eşzamansız olduğunu ve bir veya daha fazla await
ifadesi içerebileceğini belirtir. İşte temel sözdizimi:
async function functionName(parameters) {
// fonksiyon gövdesi
}
İşte bir API'den veri çeken bir async
fonksiyonuna bir örnek:
async function fetchData(url) {
try {
const response = await fetch(url);
const data = await response.json();
return data;
} catch (error) {
console.error('Bir hata oluştu:', error);
}
}
Bu örnekte, fetchData
, fetch
çağrısının çözülmesini beklemek için await
kullanan bir async
fonksiyondur. fetch
çağrısı başarılı olursa, yanıtı işler ve verileri döndürür. Bir hata varsa, yakalanır ve konsola kaydedilir.
Await Nedir?
JavaScript'teki await
anahtar kelimesi, bir Promise
çözülene kadar fonksiyonun yürütülmesini duraklatmak için bir async
fonksiyon içinde kullanılır. await
kullandığınızda, fonksiyon Promise
'in yerleşmesini bekler ve ardından Promise
'in sonucuyla yürütmeye devam eder. Promise
reddedilirse, await
ifadesi reddedilen değeri atar ve bunu try
/catch
bloklarıyla işlemenize olanak tanır.
İşte await
'i göstermek için basit bir örnek:
async function getUserData() {
try {
let response = await fetch('/user/data');
let data = await response.json();
console.log(data);
} catch (error) {
console.error('Bir hata oluştu:', error);
}
}
getUserData();
Bu örnekte, getUserData
, kullanıcı verilerini getiren bir async
fonksiyondur. await
anahtar kelimesi, bir sonraki satıra geçmeden önce fetch
çağrısının çözülmesini beklemek için kullanılır ve bu da response.json()
çağrısının çözülmesini beklemek için await
kullanır. Bu promise'lerden herhangi biri reddedilirse, hata catch
bloğunda yakalanacaktır.

Neden Async/Await Kullanmalısınız?
Programlamada, özellikle NodeJs'te async
ve await
kullanmak çeşitli avantajlar sağlar:
- Eşzamansız Kodu Basitleştirir: Daha kolay anlaşılır ve bakımı yapılabilir hale getirerek, eşzamansız kodu eşzamanlı koda daha çok benzeyen ve öyle davranan bir şekilde yazmanıza olanak tanır.
- Okunabilirliği İyileştirir: Birden fazla iç içe geçmiş geri çağırma içeren "geri çağırma cehennemi" veya "kader piramidi" senaryosundan kaçınarak, kod daha temiz ve daha okunabilir hale gelir.
- Hata İşleme: Geleneksel geri çağırma tabanlı yaklaşımlarda olduğu kadar kolay olmayan, eşzamanlı koda benzer şekilde try/catch bloklarıyla daha iyi hata işleme sağlar.
- Kontrol Akışı: Eşzamansız işlemlerin akışı üzerinde daha iyi kontrol sağlar ve daha öngörülebilir bir şekilde yürütülen kod yazmanıza olanak tanır.
- Engellemeyen:
await
, async fonksiyonun yürütülmesini durdurur ve ana iş parçacığını engellemeden Promise'in çözülmesini bekler, diğer işlemlerin arka planda çalışmaya devam etmesini sağlar.
Async/Await ile Hata İşleme
JavaScript'te async
/await
ile hata işleme, try
/catch
bloklarını kullanarak eşzamanlı hata işlemeye benzer ve basittir. İşte bir async
fonksiyonda hataları nasıl işleyebileceğiniz:
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Veri getirilirken hata oluştu:', error);
}
}
fetchData();
Yukarıdaki örnekte, fetch
çağrısı başarısız olursa veya JSON'u ayrıştırmada bir hata oluşursa, hata catch
bloğunda yakalanacaktır. Bu, özellikle birden fazla eşzamansız işlemle uğraşırken kullanışlı olan merkezi bir hata işlemeye olanak tanır.
Unutmayın, hatalar düzgün bir şekilde yakalanmazsa, işlenmemiş promise reddetmeleri hala oluşabilir. Uygulamanızdaki olası sorunlardan kaçınmak için her promise'in bir .catch()
işleyicisine sahip olduğundan veya bir async
fonksiyonda bir try
/catch
bloğu içinde olduğundan emin olmak önemlidir.
Apidog ile Async/Await
Apidog sadece bir API geliştirme platformu değil; tüm API yaşam döngüsünü kolaylaştıran kapsamlı bir pakettir. Tasarım öncelikli yaklaşımıyla Apidog, API'lerinizin yalnızca işlevsel değil, aynı zamanda sezgisel ve kullanıcı dostu olmasını sağlar.
Apidog ile async/await kullanmak, API isteklerini ve yanıtlarını işleme verimliliğini artırır. Geliştiricilerin temiz ve okunması kolay kod yazmasına olanak tanır, bu da hata ayıklamayı kolaylaştırır.

Sonuç
Node.js'deki Async/await, eşzamansız kod yazmayı basitleştiren güçlü bir özelliktir. Bu sözdizimini anlayarak ve kullanarak, geliştiriciler daha verimli, okunabilir ve bakımı yapılabilir uygulamalar yazabilirler.