İlk olarak, bu soruya cevap vermekte geciktiğimin farkındayım.
Senkron ve asenkron tartışmadan önce, programların nasıl çalıştığına kısaca göz atalım.
In senkron durumda, her bir deyim tamamlar sonraki deyimi çalıştırılır önce. Bu durumda program ifadelerin sıralamasına göre tam olarak değerlendirilir.
Bu nasıl asenkron JavaScript çalışır. JavaScript motorunda iki bölüm vardır; bunlardan biri koda bakar ve işlemleri sıralar, diğeri kuyruğu işler. Kuyruk işleme bir iş parçacığında gerçekleşir, bu nedenle bir seferde yalnızca bir işlem olabilir.
Eşzamansız bir işlem (ikinci veritabanı sorgusu gibi) görüldüğünde, kod ayrıştırılır ve işlem kuyruğa alınır, ancak bu durumda bu işlem tamamlandığında çalıştırılacak bir geri arama kaydedilir. Kuyrukta zaten birçok işlem olabilir. Sıranın önündeki işlem işlenir ve kuyruktan kaldırılır. Veritabanı sorgusu işlemi işlendikten sonra, istek veritabanına gönderilir ve tamamlandığında geri arama tamamlandığında yürütülür. Şu anda, işlemi "işleyen" kuyruk işlemcisi bir sonraki işlemde hareket eder - bu durumda
console.log("Hello World");
Veritabanı sorgusu hala işleniyor, ancak console.log işlemi kuyruğun önünde ve işleniyor. Bu eşzamanlı bir işlem olarak hemen "Hello World" çıktısına neden olur. Bir süre sonra, veritabanı işlemi tamamlanır, ancak o zaman sorgu ile kaydedilen geri arama çağrılır ve işlenir ve değişken sonucun değeri satırlara ayarlanır.
Bir eşzamansız işlemin başka bir eşzamansız işlemle sonuçlanması mümkündür, bu ikinci işlem kuyruğa konur ve kuyruğun önüne geldiğinde işlenir. Zaman uyumsuz bir işlemle kaydedilen geri aramayı çağırmak, JavaScript çalışma süresinin tamamlandığında işlemin sonucunu nasıl döndürdüğüdür.
Hangi JavaScript işleminin eşzamansız olduğunu bilmenin basit bir yöntemi, geri arama gerektirip gerektirmediğini not etmektir - geri arama, ilk işlem tamamlandığında yürütülecek koddur. Sorudaki iki örnekte, sadece ikinci vakanın bir geri çağırma olduğunu görebiliriz, bu yüzden ikisinin asenkron çalışmasıdır. Eşzamansız bir işlemin sonucunu ele alma farklı stilleri nedeniyle her zaman böyle değildir.
Daha fazla bilgi edinmek için vaatleri okuyun. Vaatler, eşzamansız bir işlemin sonucunun ele alınmasının başka bir yoludur. Vaatlerle ilgili güzel şey, kodlama stilinin daha çok senkron kod gibi hissetmesidir.
'Fs' düğümü gibi birçok kütüphane, bazı işlemler için hem eşzamanlı hem de eşzamansız stiller sağlar. İşlemin uzun sürmediği ve çok kullanılmadığı durumlarda - bir yapılandırma dosyasının okunması durumunda - senkronize stil işlemi, okunması daha kolay olan kodla sonuçlanır.