Node.js'de Eşzamansız Kontrol Akışı Nedir?

Node Js De Eszamansiz Kontrol Akisi Nedir



Kontrol akışı, uygulamanızın yerleşik sürecinin yürütüldüğü yürütme yoludur. Bu akış, tüm programın belirli bir bölümünü ilk önce veya rastgele bir yöntemin tamamlanmasından sonra yürütmek istediğinizde çok yardımcı olur. Yürütme akışı, kullanılan yöntemin niteliğine göre genellikle eşzamansız veya eşzamanlı olarak ayarlanır.

Bu yazı, Node.js'de eşzamansız kontrol akışının çalışmasını ve uygulanmasını açıklamaktadır.

Node.js'de Eşzamansız Kontrol Akışı Nedir?

Node.js'deki eşzamansız kontrol akışı, ağ istekleri yapma, olayları işleme vb. gibi eşzamansız işlemlerle uğraşırken yürütme akışını yönetme ve kontrol etme şeklinizi ifade eder. Node.js özellikle eşzamansız bir yapı için tasarlanmış olsa da, belirli kodun amaçlanan sırada yürütülmesini ve hata işlemeyi etkili bir şekilde gerçekleştirmesini sağlamak daha iyidir.







Asenkron kontrol akışının anlaşılırlığını artırmak için bir kod örneği verelim:



fsObj idi = gerekmek ( 'f' ) ;
//Soyutlanmış Geri Arama Fonksiyonu
readFileAsync işlevi ( hedefDosyaYolu ) {
geri dönmek yeni Söz ( ( çözmek, reddetmek ) => {
fsObj. Dosyayı oku ( hedefDosyaYolu, 'utf-8' , ( hata, içerik ) => {
eğer ( hata ) {
reddetmek ( hata ) ;
} başka {
çözmek ( içerik ) ;
}
} ) ;
} ) ;
}

// Birden fazla dosyanın sırayla okunmasını sağlayan fonksiyon
eşzamansız işlev readFileSequentially ( ) {
denemek {
yapı dosya1Veri = readFileAsync'i bekliyoruz ( 'yenidosyam1.txt' ) ;
konsol. kayıt ( 'İlk Dosya Verisi:' , dosya1Veri ) ;

yapı dosya2Veri = readFileAsync'i bekliyoruz ( 'usecase.txt' ) ;
konsol. kayıt ( 'İkinci Dosya Verileri:' , dosya2Veri ) ;

yapı dosya3Veri = readFileAsync'i bekliyoruz ( 'paket.json' ) ;
konsol. kayıt ( 'Üçüncü Dosya Verileri:' , dosya3Veri ) ;
} yakalamak ( hata ) {
konsol. hata ( 'Oluşan Hata:' , hata ) ;
}
}

Dosyayı Sırayla Oku ( ) ;

Yukarıdaki kodun açıklaması şu şekildedir:



  • İlk önce “ fs ” modülüne gidin ve nesnesini “ fsObj ” değişkeni.
  • Daha sonra bir ' tanımlayın readFileAsync() ' tek parametresine sahip ' adlı işlev hedefDosyaYolu ” hedeflenen dosyanın yolunu içerir.
  • Bu işlev bir “ döndürür söz ' iki parametreden oluşan gerekli geri çağırma işlevini içeren ' çözmek ' Ve ' reddetmek ”.
  • Geri arama işlevinin içinde “ dosyaoku() 'tarafından sağlanan yöntem' fs ” modülü. Ayrıca sağlanan parametreyi iletin: hedefDosyaYolu “readFile()” yönteminin ilk parametresi olarak.
  • Dosyayı oku ” yöntemi aynı zamanda “ parametrelerine sahip gerekli geri çağırma fonksiyonunu da içerir. hata ' Ve ' içerik ”. Geç ' hata ' içine ' reddetmek() “Hataların oluşması durumunda yöntem ve” içerik ' içine ' çözmek() Hata bulunamaması durumunda ” yöntemi.
  • Şimdi “adında eşzamansız bir işlev oluşturun. readFileSequentialy() ”ve bir“ içeriyor denemek/yakalamak ' engellemek.
  • İçinde ' denemek ” bloğunda, önceden oluşturulmuş olanın çağrılmasıyla oluşturulan sonucu saklayan üç değişken oluşturun. readFileAsync() ' işlev. Çalıştırılması gereken istenen dosyanın yolu her seferinde bu fonksiyon parantezinin içine aktarılır.
  • Anahtar kelime “ beklemek ” ayrıca, dosyayı okuma eylemi tamamlanana kadar kontrol akışını durdurmak için çağrı sırasında işlevin arkasına da yerleştirilir.
  • Ayrıca, alınan veya okunan dosya içeriğini görüntülemek için değişkenleri konsolda görüntüleyin.
  • Son olarak, içeren “'i çağırın readFileSequentialy() ' işlev.

Çalıştırmak için yukarıda belirtilen kodu “” uzantısına sahip istediğiniz dosyaya yerleştirin. .js ” Node.js projenizin içinde bulunuyor. Bizim durumumuzdaki ana dosya “ controlFlow.js ”, yani yürütme komutumuz şu şekilde olacaktır:





düğüm kontrolüFlow. js

Oluşturulan çıktı, eşzamansız kontrol akışı kullanılarak istenen dosyalara ilişkin verilerin sırayla görüntülendiğini gösterir:



Node.js Engellenen Kodun Olası Nedenleri ve Kaçınma Adımları Nelerdir?

Senkron kod aynı zamanda “ Blok Kodu ” Çalışan sürecin yürütülmesine kadar süreçlerin yürütülmesini durdurduğu için. Bu, uygulama performansının ve yanıt verme hızının zayıf olmasına neden olur. Kodun engellenmesi genellikle eşzamanlı veya CPU'ya bağlı işlemler nedeniyle oluşur. Kod engellemenin olası nedenleri ve bunlardan nasıl kaçınılacağı aşağıdaki tabloda belirtilmiştir:

Kod Engellemenin Nedenleri Kod Engelleme Çözümü
Fs.readFileSync() gibi eşzamanlı dosya işlemlerinin kullanılması. Fs.readFile gibi eşzamansız dosya işlemlerini kullanın.
Ağır hesaplamalar veya uzun süren döngüler gibi CPU'ya bağlı işlemlerin kullanılması. CPU'ya bağlı görevleri daha küçük, engellemeyen parçalara bölerek çalışan iş parçacıklarına aktarın.
Uzak API'lere yönelik HTTP isteklerinin kullanılması nedeniyle yavaş harici ağ istekleri Axios gibi eşzamansız HTTP kitaplıklarını veya yerleşik 'http' veya 'https' modüllerini kullanın.
Optimize edilmemiş veritabanı sorguları Veritabanı tarafından sağlanan sorgu optimizasyon araçlarını kullanarak veritabanı sorgularını optimize edin.
Sonsuz döngülerin veya ara vermeden sıkı döngülerin kullanılması. Döngülerin çıkış koşullarına sahip olduğundan ve sonsuz şekilde çalışmadığından emin olun.

Çözüm

Asenkron kontrol akışı şu anahtar kelimeleri kullanır: eşzamansız/beklemede Yürütme akışını eşzamansız bir şekilde değiştirmek veya kontrol etmek için. Gerekli eşzamansız yöntemin geri çağrılması soyutlanır ve ayrı bir işlevde saklanır. Daha sonra bu fonksiyon, wait anahtar sözcüğünün yardımıyla, istenildiği gibi diğer yöntemlerle birlikte sıralı bir şekilde çağrılır. Bu işlevler başka bir özel eşzamansız işlevde saklanır ve daha sonra yürütmeyi başlatmak için çağrılır. Bu kılavuzda Node.js'deki eşzamansız kontrol akışı açıklanmıştır.