Konuyu Açan
#0
Promise tabanlı programlama, JavaScript’te asenkron işlemlerle çalışmanın önemli bir parçasıdır. İki yaygın yöntem olan
Promise.all, geçerli Promise'ların tümü başarılı olduğunda çözülen bir Promise döner. Eğer herhangi bir Promise reddedilirse,
Bu durumda,
Promise.allSettled ise tüm Promise'ların tamamlanmasını bekler, yani her bir Promise ya başarılı ya da başarısız sonuçlanır. Tüm sonuçları içeren bir dizi döner. Bu, özellikle birden fazla işlemin sonucunu görmek istediğimizde faydalıdır:
Burada
Bu iki yöntem arasındaki temel farklar, hata yönetimi ve sonuç alma şekilleridir.
Promise.all ve Promise.allSettled, birden fazla Promise'ı yönetmek için kullanılır, ancak farklı senaryolar için tasarlanmışlardır. Bu yazıda bu iki yöntemin nasıl çalıştığını ve hangi durumlarda tercih edilmesi gerektiğini inceleyeceğiz.Promise.all, geçerli Promise'ların tümü başarılı olduğunda çözülen bir Promise döner. Eğer herhangi bir Promise reddedilirse,
Promise.all hemen reddedilir ve hata mesajı ile sonuçlanır. Örneğin, üç asenkron işlemimiz olduğunu düşünelim; eğer bunlardan biri başarısız olursa, diğerlerinin sonuçlarını asla göremeyiz:CODE
12345678
const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(42);
const promise3 = Promise.reject("Hata!");
Promise.all([promise1, promise2, promise3])
.then(values => console.log(values))
.catch(error => console.error(error)); // Çıktı: Hata!
Bu durumda,
promise3 reddedildiği için Promise.all sonucu da reddedilmiş olur.Promise.allSettled ise tüm Promise'ların tamamlanmasını bekler, yani her bir Promise ya başarılı ya da başarısız sonuçlanır. Tüm sonuçları içeren bir dizi döner. Bu, özellikle birden fazla işlemin sonucunu görmek istediğimizde faydalıdır:
CODE
1234567
const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(42);
const promise3 = Promise.reject("Hata!");
Promise.allSettled([promise1, promise2, promise3])
.then(results => console.log(results));
Burada
results dizisi aşağıdaki gibi olacaktır:- { status: "fulfilled", value: 3 }
- { status: "fulfilled", value: 42 }
- { status: "rejected", reason: "Hata!" }
Bu iki yöntem arasındaki temel farklar, hata yönetimi ve sonuç alma şekilleridir.
Promise.all, tüm işlemlerin başarılı olmasını beklerken, Promise.allSettled her durumun sonucunu almayı sağlar. Dolayısıyla, projenizin ihtiyaçlarına göre doğru seçimi yapmak önemlidir. Bu iki yöntemi kullanarak asenkron işlemlerinizin verimliliğini artırabilirsiniz.