Takip et

JavaScript’te Gelişmiş Promise Desenleri

JavaScript’te Gelişmiş Promise Desenleri

JavaScript’te Promise’ler, asenkron işlemleri yönetmenin en etkili yollarından biridir. Temel Promise kullanımını kavradıysanız, bu makalede gelişmiş teknikleri ve yaygın kullanım kalıplarını ele alacağız. Bu sayede, daha karmaşık asenkron senaryoları daha temiz ve okunabilir bir şekilde yönetebileceksiniz. Öncelikle, temel Promise bilgisinin olduğunu varsayarak ilerleyeceğiz. Ancak, temel bilgileri hatırlatmak adına, kısa bir özet verelim.

Promise Temelleri (Kısa Özet)

Bir Promise, henüz bilinmeyen bir değeri temsil eden bir nesnedir. Bu değer, gelecekte tamamlanacak veya başarısız olacak bir işlemin sonucudur. Bir Promise, üç temel durumda bulunabilir:

  • Pending (Beklemede): İşlem henüz tamamlanmamıştır.
  • Fulfilled (Tamamlandı): İşlem başarılı bir şekilde tamamlanmıştır.
  • Rejected (Reddedildi): İşlem başarısız olmuştur.

Promise’ler, .then() ve .catch() metodları aracılığıyla değerlerine erişmemizi sağlar. .then(), işlem başarılı olduğunda çalışır, .catch() ise işlem başarısız olduğunda çalışır.

Gelişmiş Promise Desenleri

1. Promise.all(): Birden Fazla Promise’i Paralel Çalıştırmak

Birden fazla asenkron işlemi aynı anda çalıştırmanız gerekiyorsa, Promise.all() metodu ideal çözümdür. Bu metod, bir Promise dizisi alır ve tüm Promise’ler tamamlandığında veya birisi reddedildiğinde sonuç döndürür.


Promise.all([
  fetch('url1'),
  fetch('url2'),
  fetch('url3')
])
.then(responses => {
  // Tüm cevaplar burada
})
.catch(error => {
  // Bir hata oluştu
});

2. Promise.race(): En Hızlı Promise’i Seçmek

Birkaç Promise’den yalnızca en hızlı tamamlananı ilgilendirmeniz gerekiyorsa, Promise.race() kullanabilirsiniz. İlk tamamlanan veya reddedilen Promise’in sonucunu döndürür.


Promise.race([
  fetch('url1'),
  fetch('url2')
])
.then(response => {
  // En hızlı cevap burada
})
.catch(error => {
  // Bir hata oluştu
});

3. Promise.resolve() ve Promise.reject(): Promise Oluşturma

Mevcut bir değeri Promise’e dönüştürmek veya yeni bir Promise oluşturmak için Promise.resolve() ve Promise.reject() kullanabilirsiniz. Promise.resolve() başarılı bir Promise oluştururken, Promise.reject() başarısız bir Promise oluşturur.


const resolvedPromise = Promise.resolve('Başarılı!');
const rejectedPromise = Promise.reject('Başarısız!');

4. Zincirleme (Chaining): Birden Fazla .then() Metodu Kullanımı

Birden fazla asenkron işlem gerçekleştiriyorsanız, Promise’leri zincirleme kullanarak temiz ve okunabilir kod yazabilirsiniz. Her .then() metodu, önceki .then() metodunun sonucunu alır ve yeni bir Promise döndürür.


fetch('url')
.then(response => response.json())
.then(data => {
  // Verileri işleyin
})
.catch(error => {
  // Hata yönetimi
});

5. Asenkron Fonksiyonlar (async/await): Daha Okunabilir Kod

Asenkron işlemleri yönetmek için async/await kullanımı, Promise’lerle çalışmayı daha okunabilir ve daha kolay hale getirir. async anahtar kelimesi ile bir fonksiyonu asenkron hale getirebilir ve await anahtar kelimesi ile bir Promise’in tamamlanmasını bekleyebilirsiniz.


async function fetchData() {
  try {
    const response = await fetch('url');
    const data = await response.json();
    // Verileri işleyin
  } catch (error) {
    // Hata yönetimi
  }
}

Bu gelişmiş Promise desenlerini kullanarak, karmaşık asenkron işlemleri daha etkili ve temiz bir şekilde yönetebilirsiniz. Daha fazla bilgi için fatihsoysal.com adresini ziyaret edebilirsiniz. Ayrıca, konu hakkında daha fazla bilgi edinmek için MDN Web Docs belgelerine göz atabilirsiniz.

#Etiketler: JavaScript, Promise, Asenkron Programlama, Promise Desenleri, Promise.all, Promise.race, Promise.resolve, Promise.reject, async/await, JavaScript Örnekleri, Fatih Soysal


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık