Rumah >hujung hadapan web >tutorial js >Bagaimanakah anda mengendalikan operasi tak segerak dan mengakses data fail dalam Node.js menggunakan panggilan balik?
Panggil Balik dan Pengaturcaraan Asynchronous dalam Node.js dengan fs.readFile
Node.js, secara lalai, menggunakan pengaturcaraan tak segerak, yang melibatkan pelaksanaan kod tanpa menunggu jawapan daripada sumber luaran. Tingkah laku ini boleh diperhatikan dalam coretan kod yang disediakan:
<code class="javascript">var content; fs.readFile('./Index.html', function read(err, data) { if (err) { throw err; } content = data; }); console.log(content);</code>
Dalam kod ini, pernyataan console.log cuba mencetak kandungan fail Index.html. Walau bagaimanapun, pada masa ini ia log tidak ditentukan kerana operasi fs.readFile adalah tak segerak dan mengambil sedikit masa untuk diselesaikan.
Memahami Panggilan Balik Asynchronous
Panggil balik tak segerak ialah fungsi yang digunakan selepas operasi tak segerak telah selesai dilaksanakan. Dalam kes ini, fungsi panggil balik fs.readFile, read(), akan dilaksanakan selepas fail dibaca. Ini bermakna kod di bawah panggilan fs.readFile, termasuk pernyataan console.log, akan dilaksanakan sebelum fail dibaca, menghasilkan pembolehubah kandungan yang tidak ditentukan.
Mendekati Asynchronicity
Untuk mengendalikan ketidaksegerakan, terdapat beberapa pendekatan yang boleh anda ambil:
1. Mengalihkan Kod ke dalam Panggilan Balik:
Alihkan semua kod yang bergantung pada hasil panggilan tak segerak ke dalam fungsi panggil balik. Ini melibatkan meletakkan pernyataan console.log di dalam panggilan balik read().
<code class="javascript">fs.readFile('./Index.html', function read(err, data) { if (err) { throw err; } const content = data; console.log(content); });</code>
2. Menggunakan Fungsi Tanpa Nama:
Pilihan lain ialah mencipta fungsi tanpa nama untuk merangkum kod yang bergantung pada panggilan tak segerak. Ini membolehkan anda menghantar fungsi panggil balik sebagai hujah kepada fs.readFile.
<code class="javascript">const printContent = (data) => console.log(data); fs.readFile('./Index.html', printContent);</code>
3. Corak Fungsi Panggilan Balik:
Pendekatan yang disyorkan ialah membungkus panggilan tak segerak dalam fungsi yang mengambil panggilan balik sebagai hujah. Ini membolehkan organisasi kod yang lebih baik dan memudahkan untuk mengurus aliran kerja tak segerak.
<code class="javascript">function readHtmlFile(callback) { fs.readFile('./Index.html', callback); } readHtmlFile((err, data) => { if (err) { throw err; } const content = data; console.log(content); });</code>
Atas ialah kandungan terperinci Bagaimanakah anda mengendalikan operasi tak segerak dan mengakses data fail dalam Node.js menggunakan panggilan balik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!