Async ve Promise arasında ki fark nedir?

async ve promise arasındaki fark, JavaScript'te asenkron işlemleri gerçekleştirme yöntemleri arasındaki temel farklardan biridir. Her ikisi de asenkron işlemleri yönetmek için kullanılır, ancak farklı yaklaşımlar sunarlar.

Promise

  • Tanım: Promise, gelecekte bir değer üretecek bir işlemin tamamlanma durumunu temsil eder. Bu işlem başarılı olabilir (resolve) veya başarısız olabilir (reject).
  • Kullanım: Bir işlemi başlatır ve o işlemin sonucuna bağlı olarak .then(), .catch(), ve .finally() metodları ile zincirleme işlemler yapabilirsiniz.
  • Örnek:

const fetchData = () => {
return new Promise((resolve, reject) => {
// Asenkron işlem burada yapılır.
// İşlem başarılıysa, resolve ile sonuç döndürülür.
// İşlem başarısızsa, reject ile hata döndürülür.
});
};

fetchData()
.then(data => console.log(data))
.catch(error => console.error(error));

Async/Await

  • Tanım: async ve await, Promise tabanlı asenkron işlemleri daha okunabilir ve senkron benzeri bir yapıda yazmanızı sağlar. async fonksiyon, otomatik olarak bir Promise döndürür.
  • Kullanım: await anahtar kelimesi, Promise'in sonucunu beklemek için kullanılır. Bu, asenkron işlemin sonucunu bir değişkende saklamanıza ve kodunuzun daha sezgisel akışta çalışmasını sağlar.
  • Örnek:

const fetchData = async () => {
try {
// await, promise'in çözülmesini bekler.
const data = await someAsyncFunction();
console.log(data);
} catch (error) {
console.error(error);
}
};

Anahtar Farklar

  • Sözdizimi Kolaylığı: async/await kullanımı, zincirleme .then() ve .catch() metodlarına göre daha okunabilir ve anlaşılır bir kod yapısı sunar.
  • Hata Yakalama: async/await ile hata yakalama, try/catch blokları kullanılarak daha sezgisel bir şekilde yapılabilir. Promise'lerde ise .catch() metodu kullanılır.
  • Kontrol Akışı: async/await ile yazılan kodlar, senkron kodlara daha benzer bir kontrol akışı sunar, bu da özellikle karmaşık asenkron işlemlerde kodun anlaşılmasını kolaylaştırır.

Her iki yöntem de modern JavaScript'te yaygın olarak kullanılır ve asenkron işlemleri daha yönetilebilir hale getirir. İhtiyaçlarınıza ve tercih ettiğiniz kodlama stiline göre, bu yöntemlerden birini veya her ikisini birlikte kullanabilirsiniz.