Asenkron ve Senkron Fonksiyon Nedir?
Asenkron ve Senkron fonksiyonlar, bir program veya sistem içinde yapılan işlemlerin zamanlamasına ilişkin kavramlardır.
Asenkron fonksiyonlar, bir işlem başlatıldıktan sonra diğer işlemlerin yapılmasına izin verir. Bu, işlemin tamamlanmasını beklemeden diğer işlemlerin yapılması anlamına gelir. Bu tür fonksiyonlar, programın performansını artırmak ve işlemlerin daha hızlı tamamlanmasını sağlamak için kullanılır.
Senkron fonksiyonlar ise bir işlem tamamlandıktan sonra diğer işlemlerin yapılmasına izin verir. Bu tür fonksiyonlar, bir işlemin tamamlanması gerektiğinde diğer işlemlerin bekletilmesine neden olur. Bu tür fonksiyonlar, önemli işlemlerin tamamlanmasını garanti etmek için kullanılır.
Örneğin, bir web uygulamasında bir form doldurulurken veritabanına kaydedilen bir işlem asenkron olarak yapılabilir, ancak bir ödeme işleminin tamamlanması gerektiğinde senkron fonksiyonlar kullanılabilir.
“Asenkron” ve “senkron” kelimeleri, bir süreç içerisinde birbiriyle ilişkili işlemlerin ne zaman gerçekleştirileceğini belirtir.
- Asenkron işlemler, birbirlerinden bağımsız olarak gerçekleştirilir ve birbirlerinin tamamlanmasına gerek duymaz. Asenkron işlemler, genellikle bir iş parçacığı veya thread yardımıyla yapılır ve birbirlerinden bağımsız olarak çalışır. Bu, işlemler arasında zaman geçirilmesine ve işlemlerin birbirlerini beklemesine gerek kalmamasını sağlar.
- Senkron işlemler ise birbirlerine bağlıdır ve birbirlerinin tamamlanmasını beklerler. Bu işlemler genellikle birbirlerine sırayla erişir ve birbirlerinin tamamlanmasını beklerler. Bu, işlemler arasında zaman geçirilmesine ve işlemlerin birbirlerini beklemesine neden olur.
Bir fonksiyonun asenkron veya senkron olduğu, fonksiyonun nasıl tasarlandığına ve işletim sisteminin nasıl çalıştığına göre değişebilir. Bir fonksiyon asenkron olarak tasarlandığında, işletim sistemi bu fonksiyonu bir iş parçacığı veya thread yardımıyla çalıştırır ve fonksiyon tamamlandığında, işletim sistemi işlemi tamamlamış olarak işaretler ve diğer işlemlere devam eder. Senkron fonksiyonlar ise, işletim sistemi tarafından sırayla çalıştırılır ve bir sonraki işlem sadece önceki işlemin tamamlanmasını bekleyerek gerçekleştirilir.
Javascript’te async ve await Nasıl Kullanılır?
Javascript’te async
ve await
anahtar kelimeleri, asenkron işlemleri yönetmek için kullanılır. async
anahtar kelimesi, bir fonksiyonun asenkron olacağını belirtir ve fonksiyon tamamlandığında bir promise döndürür. await
anahtar kelimesi ise, bir promise’nin tamamlanmasını bekler ve promise’nin değerini döndürür.
Örneğin, bir asenkron işlemi yönetmek için aşağıdaki gibi bir fonksiyon yazabilirsiniz:
1 2 3 4 5 6 7 | async function getData() { const response = await fetch('https://example.com/data'); const data = await response.json(); return data; } |
Bu fonksiyon, fetch
işlemini çalıştırır ve sonuç olarak bir promise döndürür. await
anahtar kelimesi kullanılarak, promise’nin tamamlanması beklenir ve promise’nin değeri response
değişkenine atanır. Daha sonra, response.json()
işlemini çalıştırır ve bu da bir promise döndürür. await
kullanılarak bu promise de beklenir ve değer data
değişkenine atanır. Son olarak, data
değişkeni döndürülür.
Bu fonksiyonu çağırmak için aşağıdaki gibi bir kod yazabilirsiniz:
1 2 3 | const result = await getData(); |
Bu kod, getData
fonksiyonunun çalışmasını bekler ve fonksiyonun döndürdüğü değeri result
değişkenine atar.
Bir asenkron işlemi yönetmek için aşağıdaki gibi bir fonksiyon yazabilirsiniz:
1 2 3 4 5 6 7 | async function getUserById(id) { const response = await fetch(`https://my-api.com/users/${id}`); const user = await response.json(); return user; } |
Bu fonksiyon, bir kullanıcının kullanıcı ID’sine göre veritabanından çekileceğini varsayar. fetch
işlemini çalıştırır ve sonuç olarak bir promise döndürür. await
anahtar kelimesi kullanılarak, promise’nin tamamlanması beklenir ve promise’nin değeri response
değişkenine atanır. Daha sonra, response.json()
işlemini çalıştırır ve bu da bir promise döndürür. await
kullanılarak bu promise de beklenir ve değer user
değişkenine atanır. Son olarak, user
değişkeni döndürülür.
Bu fonksiyonu çağırmak için aşağıdaki gibi bir kod yazabilirsiniz:
1 2 3 4 | const user = await getUserById(123); console.log(user); |
Bu kod, getUserById
fonksiyonunun çalışmasını bekler ve fonksiyonun döndürdüğü değeri user
değişkenine atar. Daha sonra, console.log
komutu ile user
değişkeninin değeri ekrana yazdırılır.
Bir örnek daha verecek olursam:
1 2 3 4 5 6 7 8 9 | async function getUserName(id) { const user = await getUserById(id); return user.name; } const name = await getUserName(123); console.log(name); |
Bu kod, getUserById
fonksiyonunu çağırarak bir kullanıcı nesnesi döndürür ve daha sonra bu nesnenin name
özelliğini döndürür. getUserName
fonksiyonu çağırıldığında, fonksiyonun çalışmasını bekler ve fonksiyonun döndürdüğü değeri name
değişkenine atar. Daha sonra, console.log
komutu ile name
değişkeninin değeri ekrana yazdırılır.
Yorum yap