Fungsi panggil balik Node.js
Manifestasi langsung pengaturcaraan tak segerak Node.js ialah panggil balik.
Pengaturcaraan tak segerak bergantung pada panggilan balik, tetapi tidak boleh dikatakan bahawa atur cara menjadi tak segerak selepas menggunakan panggilan balik.
Fungsi panggil balik akan dipanggil selepas menyelesaikan tugasan Node menggunakan sejumlah besar fungsi panggil balik Semua Node API menyokong fungsi panggil balik.
Sebagai contoh, kita boleh membaca fail semasa melaksanakan arahan lain Selepas pembacaan fail selesai, kami mengembalikan kandungan fail sebagai parameter fungsi panggil balik. Dengan cara ini tiada penyekatan atau menunggu operasi I/O fail semasa melaksanakan kod. Ini sangat meningkatkan prestasi Node.js dan boleh mengendalikan sejumlah besar permintaan serentak.
Contoh kod sekatan
Buat input.txt fail dengan kandungan berikut:
php中文网官网地址:www.php.cn
Buat fail main.js dengan kod berikut:
var fs = require("fs"); var data = fs.readFileSync('input.txt'); console.log(data.toString()); console.log("程序执行结束!");
Hasil pelaksanaan kod di atas adalah seperti berikut:
$ node main.js php中文网官网地址:www.php.cn 程序执行结束!
Contoh kod tidak menyekat
Buat input.txt fail dengan kandungan berikut:
php中文网官网地址:www.php.cn
Buat fail main.js, Kodnya adalah seperti berikut:
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { if (err) return console.error(err); console.log(data.toString()); }); console.log("程序执行结束!");
Hasil pelaksanaan kod di atas adalah seperti berikut:
$ node main.js 程序执行结束! php中文网官网地址:www.php.cn
Dalam dua contoh di atas, kami memahami perbezaan antara menyekat dan tidak menyekat panggilan. Contoh pertama melaksanakan program hanya selepas fail dibaca. Dalam contoh kedua, kita tidak perlu menunggu fail dibaca, supaya kod seterusnya boleh dilaksanakan pada masa yang sama semasa fail dibaca, yang sangat meningkatkan prestasi program.
Oleh itu, penyekatan dilaksanakan mengikut tertib, tetapi bukan penyekatan tidak perlu teratur, jadi jika kita perlu memproses parameter fungsi panggil balik, kita perlu menulisnya dalam fungsi panggil balik.