Apa itu Aliran Kontrol Asinkron di Node.js?

Apa Itu Aliran Kontrol Asinkron Di Node Js



Alur kontrol adalah cara eksekusi di mana proses yang berada pada aplikasi Anda dijalankan. Alur ini sangat membantu ketika Anda ingin mengeksekusi bagian tertentu dari keseluruhan program terlebih dahulu atau setelah metode acak selesai. Alur eksekusi biasanya diatur secara asynchronous atau synchronous sesuai dengan sifat metode yang digunakan.

Tulisan ini menjelaskan cara kerja dan implementasi aliran kontrol asinkron di Node.js.

Apa itu Aliran Kontrol Asinkron di Node.js?

Aliran kontrol asinkron di Node.js mengacu pada cara Anda mengelola dan mengontrol aliran eksekusi saat menangani operasi asinkron, seperti membuat permintaan jaringan, menangani peristiwa, dan sebagainya. Meskipun Node.js dirancang khusus untuk sifat asinkron, lebih baik memastikan bahwa kode spesifik dieksekusi dalam urutan yang diinginkan dan melakukan penanganan kesalahan secara efektif.







Mari kita lihat contoh kode untuk meningkatkan tingkat pemahaman aliran kontrol asinkron:



adalah fsObj = memerlukan ( 'fs' ) ;
//Fungsi Panggilan Balik Abstrak
fungsi readFileAsync ( targetFilePath ) {
kembali baru Janji ( ( menyelesaikan, menolak ) => {
fsObj. bacaFile ( targetFilePath, 'utf-8' , ( kesalahan, konten ) => {
jika ( kesalahan ) {
menolak ( kesalahan ) ;
} kalau tidak {
menyelesaikan ( isi ) ;
}
} ) ;
} ) ;
}

// Berfungsi untuk melakukan pembacaan beberapa file secara berurutan
fungsi async readFileSequentially ( ) {
mencoba {
konstanta file1Data = tunggu readFileAsync ( 'file baru saya1.txt' ) ;
menghibur. catatan ( 'Data Berkas Pertama:' , file1Data ) ;

konstanta file2Data = tunggu readFileAsync ( 'usecase.txt' ) ;
menghibur. catatan ( 'Data Berkas Kedua:' , file2Data ) ;

konstanta file3Data = tunggu readFileAsync ( 'paket.json' ) ;
menghibur. catatan ( 'Data File Ketiga:' , file3Data ) ;
} menangkap ( kesalahan ) {
menghibur. kesalahan ( 'Terjadi Kesalahan:' , kesalahan ) ;
}
}

bacaFileBerurutan ( ) ;

Penjelasan kode di atas adalah sebagai berikut:



  • Pertama, impor “ fs ” modul dan simpan objeknya di “ fsObj ' variabel.
  • Kemudian, tentukan “ bacaFileAsync() ” fungsi bernama yang memiliki parameter tunggal “ targetFilePath ” yang berisi jalur untuk file yang ditargetkan.
  • Fungsi ini mengembalikan “ janji ” yang berisi fungsi panggilan balik yang diperlukan yang terdiri dari dua parameter yaitu “ menyelesaikan ' Dan ' menolak ”.
  • Di dalam fungsi panggilan balik, aktifkan “ bacaFile() ” metode yang disediakan oleh “ fs ” modul. Juga, teruskan parameter yang disediakan “ targetFilePath ” sebagai parameter pertama untuk metode “readFile()”.
  • bacaFile Metode ” juga berisi fungsi panggilan balik yang diperlukan yang memiliki parameter “ kesalahan ' Dan ' isi ”. Melewati ' kesalahan ' ke dalam ' menolak() ” metode jika terjadi kesalahan dan “ isi ' ke dalam ' menyelesaikan() ” metode jika tidak ditemukan kesalahan.
  • Sekarang, buat fungsi asinkron bernama “ bacaFileBerurutan() ” dan itu berisi “ coba tangkap ' memblokir.
  • Di dalam ' mencoba ” blok, buat tiga variabel yang menyimpan hasil yang dihasilkan dengan memanggil variabel yang sudah dibuat “ bacaFileAsync() ' fungsi. Setiap kali jalur untuk file yang diinginkan yang perlu dieksekusi dilewatkan di dalam tanda kurung fungsi ini.
  • Kata kunci “ menunggu ” juga ditempatkan di belakang fungsi pada saat pemanggilan untuk menghentikan aliran kontrol hingga tindakan membaca file selesai.
  • Juga, tampilkan variabel di konsol untuk menampilkan konten file yang diambil atau dibaca.
  • Terakhir, aktifkan yang berisi “ bacaFileBerurutan() ' fungsi.

Untuk mengeksekusi, tempatkan kode yang disebutkan di atas dalam file yang Anda inginkan yang memiliki ekstensi “ .js ” yang berada di dalam proyek Node.js Anda. File utama dalam kasus kami adalah “ kontrolFlow.js ”, sehingga perintah eksekusi kita adalah sebagai berikut:





aliran kontrol simpul. js

Output yang dihasilkan menunjukkan bahwa data untuk file yang diinginkan menggunakan aliran kontrol asinkron ditampilkan secara berurutan:



Apa Kemungkinan Penyebab dan Langkah Penghindaran Kode Node.js yang Diblokir?

Kode sinkron juga dikenal sebagai “ Kode Blok ” karena menghentikan eksekusi proses hingga eksekusi proses yang sedang berjalan. Hal ini mengakibatkan kinerja dan daya tanggap aplikasi menjadi buruk. Pemblokiran kode biasanya terjadi karena operasi sinkron atau terikat CPU. Kemungkinan penyebab pemblokiran kode dan cara menghindarinya tercantum dalam tabel di bawah ini:

Penyebab Pemblokiran Kode Solusi untuk Pemblokiran Kode
Penggunaan operasi file sinkron seperti fs.readFileSync(). Gunakan operasi file asinkron seperti fs.readFile.
Penggunaan operasi yang terikat CPU seperti komputasi berat atau loop yang berjalan lama. Memindahkan tugas-tugas yang terikat CPU ke thread pekerja dengan memecahnya menjadi bagian-bagian yang lebih kecil dan tidak menghalangi.
Permintaan jaringan eksternal lambat karena penggunaan permintaan HTTP ke API jarak jauh Gunakan pustaka HTTP asinkron seperti Axios atau modul “http” atau “https” bawaan.
Kueri basis data yang tidak dioptimalkan Optimalkan kueri basis data menggunakan alat pengoptimalan kueri yang disediakan oleh basis data.
Penggunaan loop tak terbatas atau loop ketat tanpa jeda. Pastikan loop memiliki kondisi keluar dan tidak berjalan tanpa batas.

Kesimpulan

Alur kendali asynchronous menggunakan kata kunci “ async/menunggu ” untuk memodifikasi atau mengontrol aliran eksekusi secara asinkron. Panggilan balik untuk metode asinkron yang diperlukan diabstraksi dan disimpan dalam fungsi terpisah. Fungsi ini kemudian dipanggil dengan bantuan kata kunci menunggu secara berurutan beserta metode lain sesuai keinginan. Fungsi-fungsi ini disimpan dalam fungsi asinkron khusus lainnya yang kemudian dipanggil untuk memulai eksekusi. Panduan ini telah menjelaskan aliran kontrol asinkron di Node.js.