Senkron programlada her şey belli bir sırayla işlenir ve işlem sırasının bitmesi beklenir. Bu oldukça zaman kaybı olduğu gibi programımızıda yavaşlatır ve hatta işlem bitene kadar durdurabilir.
Senkron programlamadaki her şeyi sırayla işlemesi ve her bir işlemin birbirini beklemesi yeri geldiğinde programımızı çok yavaşlatabilir, hatta işlem bitene kadar durdurabilir. Örneğin yukarıdaki kodda 5. satır bir önceki satırı yani dosya okuma işlemini beklemek zorundadır. Dosya içeriği çok büyükse bu işlemler dakikalar bile alabilir. Ekrana “Program çalışıyor…” yazdırmak için bir önceki işlemin bitmesini beklemek pek akıllıca değildir. İşte bu tip durumlar için asenkron fonksiyonlar kullanırız. Kod akışının sırayla işlemediği, işlemlerin birbirini beklemediği, kod akışının işlem durumlarına göre devam ettiği programlamaya Asenkron Programlama denir.
Asenkron(Async) programlamaya neden ihtiyaç duyulmuş ilk olarak bu soruyu cevaplayalım. Kullanmakta olduğumuz programlarda aynı anda birden çok işlem yapılabilmektedir. Örneğin siz kullanıcı arayüzünde bir yazı görüyorken arka planda bir web servisine istek gönderilmiş ve cevabı bekleniyor olabilir. İlk nesil programlarda web servisinden cevap gelene kadar siz kullanıcı arayüzünde herhangi bir tuşa basamazdınız. Eğer basarsanız bir şey olmayacaktır ve peş peşe bir kaç defa basarsanız program durduruldu hatası alırdık.
Asenkron fonksiyon tanımlamak özellikler farklı tipte işlemleri bir arada yürütüyorken kullanmak oldukça pratik ve sağlıklıdır. Ancak her fonksiyonu Asenkron olarak yazılmaz. Dataların kontrolünü kaybedebilirsiniz.
Kısacası asenkron programlama programın senkron bir şekilde değil de öncelik verdiğimiz işlemlerin daha önce yapılmasını sağlayan ya da sağladığımız programlama türüdür.
Bir fonksiyona parametre atarız ve o fonksiyondan sonra başka bir fonksiyonun çalışması gerçekleşir. İşte bu yapı callback fonksiyon olarak geçer. Asenkron bir çalışma yapısı vardır ve bu asenkron yapı da şudur;
Bir işlem gerçekleşirken o işlemden sonraki adımların aksamaması gerektiği durumlardır.
Senkron Kod Örneği;
Yukarıda ki örnekte herşey normal bir şekilde yukarıdan aşağı doğru okunuyor ve çalışıyor.
Asenkron Kod Örneği;
Bu kod parçacığını çalıştırdığınızda ise Ekranda sıralı bir şekilde çıktı vermez. Çünkü settimeout fonksiyonu asenkron çalışan bir fonksiyondur. Belli bir süre geçtikten sonra işlemi gerçekleştirir. Ama console.log() metodu anında çalışır. settimeout() fonksiyonunu sistem gördüğü zaman bitmesini beklemeden bir sonraki fonksiyona geçer. Settimeout fonksiyonunun süresi dolduğunda ise içindeki işlemi gerçekleştirir.