JavaScript'te Async ve Await Kullanmanın Avantajları Nelerdir?

JavaScript’te asenkron programlama, özellikle web uygulamalarını geliştirirken sık kullanılan bir yaklaşımdır. Bu yaklaşımın bir parçası da ‘Async’ ve ‘Await’ kullanımıdır. Bu konseptlerin ne olduğunu, ne tür problemler çözdüğünü ve onları nasıl kullanabileceğinizi anlatabilir misiniz? Ayrıca, bu yöntemleri kullanmanın avantajları ve dezavantajları nelerdir? Kullanımı için hangi durumların başarılı senaryolar oluşturabileceğini, ne zaman ve neden kullanılması gerektiği hakkında örnekler verebilir misiniz?

Async ve Await Nedir?

Async ve Await, JavaScript’teki asenkron programlamayı yönetmek için kullanılan özelliklerdir. Asenkron programlama, bir işlemin tamamlanması zaman aldığında ana program akışını engellemeden diğer işlerin yapılabilmesine olanak tanır. Genellikle ağ çağrıları, dosya okuma/yazma işlemleri gibi işlemler asenkron olarak gerçekleştirilir.

  • Async: Bir fonksiyonun asenkron olduğunu belirtmek için async anahtar kelimesi kullanılır. Async anahtar kelimesini bir fonksiyon tanımının başına eklersek, bu fonksiyon her zaman yeni bir Promise döndürecektir. Bu Promise, fonksiyonun işini tamamladığını veya bir hata durumunda bir hata fırlattığını belirten bir değer taşır.
  • Await: Asenkron bir işlemi beklemek için await anahtar kelimesi kullanılır. Await anahtar kelimesi sadece async fonksiyonlar içinde kullanılabilir. Await, bir Promise’in sonucunu beklerken ana program akışını bloke eder ve ilgili Promise’in tamamlanmasını bekler. Sonucu elde edildikten sonra, program akışı devam eder ve sonucu döndürür.

Async ve Await’in Avantajları:

  1. Daha Okunabilir ve Yönetilebilir Kod: Async ve Await, asenkron kodu daha okunabilir ve anlaşılır hale getirir. İşlemler ardışık bir şekilde ifade edilir ve kodun yatay olarak genişlemesini engeller.
  2. Doğrusal Kod Akışı: Await ifadesi ile işlemler ardışık olarak çalışır ve doğrusal bir kod akışı elde edilir. Bu, işlemlerin sıralı bir şekilde gerçekleştirilmesini sağlar ve karmaşık callback yapılarının kullanılmasını önler.
  3. Hata Yakalama: Try-Catch blokları kullanarak hata yakalama, Async ve Await ile daha kolaydır. Hata yakalamak için her asenkron işlemi ayrı ayrı yakalamak yerine, tek bir yakalama bloğu kullanılabilir.
  4. Daha İyi Hata İzleme: Await ifadesi, hata durumlarında düzgün bir hata izlemesi sağlar. Hatalar, Promise zincirlerinde olduğu gibi tek bir noktada yakalanabilir ve işlenebilir.

Async ve Await’in Dezavantajları:

  1. Sadece Asenkron İşlemlerde Kullanılabilir: Async ve Await, sadece asenkron işlemleri yönetmek için kullanılabilir. Eğer bir işlem senkron olarak gerçekleştiriliyorsa, Async ve Await kullanmanın bir avantajı olmayacaktır.
  2. Performans Sorunları: Await ifadesi, asenkron işlemlerin tamamlanması beklerken kodun bloke olmasına neden olur. Bu durum, bazı durumlarda performans sorunlarına yol açabilir. Özellikle çok sayıda uzun süren asenkron işlem yapılıyorsa, bu durum performansı etkileyebilir. Bu gibi durumlarda, Promise zincirleri veya daha düşük seviye API’lar (callback’ler) kullanma avantajı olabilir.

Örnek Senaryolar:

  1. HTTP İsteği: Bir web servisi üzerinden veri almak için async-await kullanabilirsiniz. Async fonksiyon içinde await ile HTTP isteği yapabilir ve sonucunu hemen elde edebilirsiniz.
  2. Dosya İşlemleri: Dosya okuma/yazma işlemleri async-await kullanılarak yönetilebilir. Dosya okuma/yazma işlemi tamamlanana kadar program akışı bekletilir ve sonuç elde edildikten sonra devam eder.
  3. Birden Fazla Asenkron İşlem: Birden fazla asenkron işlemin ardışık olarak yapılması gereken durumlarda async-await kullanılabilir. İşlemler belirli bir düzen içinde yapılır ve doğrusal bir kod akışı elde edilir.

TERİMLER:

Promise: JavaScript’te asenkron programlama için kullanılan özel bir yapıdır. Bir işlem tamamlandığında başarılı sonuç veya hata döneceğini taşıyan bir objedir.

1 Beğeni

Ayrıca JavaScript’te Async ve Await kullanımına örnekler vererek konuyu açıklamaktan memnuniyet duyarım.

Async ve Await Nedir?

Async ve Await, JavaScript’te kodu daha okunabilir ve anlaşılır hale getiren modern işlem tamamlama mekanizmalarıdır.

  • Async, bir işlevin her zaman bir Promise döndürmesini sağlar. Ancak uygulanması gereken bir işlem yoksa bile bu işlev bir Promise döndürür.
  • Await, yalnızca async olarak tanımlanmış bir fonksiyonların içinde kullanılır ve Promise’in sonucunu döndürmek için o Promise’in yerine geçer. Yani, await bir Promise’in çözülmesini bekler ve ardından sonucunu döndürür.

Örnek Kullanım

async function getPosts() {
    const response = await fetch('https://jsonplaceholder.typicode.com/posts');
    const data = await response.json();
    return data;
}

Bu örnekte, async fonksiyonu getPosts’u tanımlıyoruz. Bu fonksiyonun içinde, API’dan veri almak için fetch fonksiyonunu çağırıyoruz. Ancak, fetch bir Promise döndürdüğünden dikkatlice await anahtar kelimesini kullanıyoruz. Bu sayede, fetch sonuçlanana kadar diğer işlemler bloke olmaz.

Daha sonra, elde edilen yanıtı JSON’a çeviririz. Bu da bir Promise döndürdüğü için, onu çözülmesini beklemek için tekrar await kullanırız.

Böylece, bu kodun bu haliyle, getPosts fonksiyonunu çağırdığınızda döndüğü değeri elde etmek için .then() metodu kullanmalısınız. Çünkü async olan fonksiyonlar her zaman bir Promise döndürür.

getPosts().then(posts => console.log(posts));

Async/Await Hata Yakalama

Hatalar, Promise’lerden farklı olarak try/catch bloğu kullanılarak yakalanabilir. İşte bir örnek:

async function getPosts() {
   try {
        const response = await fetch('https://jsonplaceholder.typicode.com/posts');
        const data = await response.json();
        return data;
   } 
   catch (error) {
       console.log('Hata oluştu: ', error);
   }
}

Bu örnekte, işlemlerimizi bir try bloğu içinde gerçekleştiriyoruz. Eğer herhangi bir yerde bir hata olursa, catch bloğu etkinleşir ve hatayı console’a loglar.

TERIMLER

Promise: JavaScript’te asenkron işlemleri temsil eden bir nesne. Bir işlem tamamlandığında “fulfilled”, hala bekliyorken “pending”, bir hata durumunda ise “rejected” durumuna geçer.

Fetch: JavaScript’te web APİ’larından veri çekmek için kullanılan bir fonksiyon.

JSON: JavaScript Object Notation. Veri depolama ve iletimi için kullanılan hafif bir data-interchange formatı. İnsanlar ve makineler tarafından kolaylıkla okunabilir.

1 Beğeni