31 Mayıs 2017 Çarşamba

Async İle Asenkron Çalışma

Async asenkron işlemler için güzel özellikleri bulunan bir javascript kütüphanesidir.Tarayıcıda kullanılabildiği gibi NodeJS ile de npm vasıtasıyla da kullanılabilir.

Async'in üç farklı konuda fonksiyonları mevcut bunlar collection dediğimiz dizilere uygulanan kolaylaştırıcı fonksiyonlar,control flow diye adlandırdıkları asenkron akışın kontrolü için işe yarayacak fonksiyonlar ki bunlar en çok kullanacağımız fonksiyonlar ve bir diğer fonksiyonlar da util dedikleri çeşitli diyebileceğimiz fonksiyon türleridir.

Bizim üzerinde duracağımız fonksiyonlar control flow kategorisindeki fonksiyonlar olacak.Çünkü kütüphanenin asıl amacı asenkron işlerin yönetiminin kolaylaştırılması.

Hangi fonksiyonun ne işe yaradığını anlatmakla birlikte örnek kodlar da aktarmaya çalışacağım.

İlk olarak async.series kullanımından başlayalım.Bu kullanım fonksiyonlarınızı sıraya dizer ve her bir fonksiyon çalıştıktan sonra callback fonksiyonu çağırılır.Callback fonksiyonuna iki parametre geçilir.Bunlardan ilki varsa bir hata diğeri de fonksiyonun sonucudur.Eğer işlem yapılırken bir hata meydana gelirse onu callback fonksiyonunun ilk parametresi olarak geçmeniz gerekmekte.Örnek kod aşağıdadır.


İkinci önemli kullanım şekli async.parallel.Bu kullanım tüm belirttiğiniz fonksiyonların paralel çalışmasını sağlar.Yani belirli bir sıra gözetmeksizin sistem hepsini başlatır hepsinin sonucunu yine series'de olduğu gibi callback fonksiyonuna bildirir.Örnek kullanım aşağıda mevcuttur.


Bir diğer önemli kullanımımız async.waterfall.Bu kullanım yöntemi adından da anlaşılacağı gibi bir akıntıya veya çağlayana benzer.Fonksiyonlar birbirini takip eder ve bir fonksiyonun çalışması önceki fonksiyondan gelen değerle sağlanır.Aşağıdaki ne demek istediğimi anlatabileceğim bir örnek mevcut.


 Şimdilik async kütüphanesine ait siz NodeJS geliştiricilerinin canını en çok sıkacağını düşündüğüm callback hellleriyle baş etmeniz için yeterli miktarda fonksiyonu açıklamaya çalıştım.Yararlı olması dileğiyle.
Share: