Saya baru mengenal nodejs Terdapat sekeping kod dalam NodeJS yang menakjubkan, yang menggunakan perisian tengah untuk merealisasikan pencetakan konsol apabila masa permintaan kod terlalu lama
.//request-time.js
module.exports = function(opts){
var time = opts.time||100;
return function(req,res,next){
var timer = setTimeout(function(){
console.log(req.method + " , " + req.url + " , too long!");
},time);
var end = res.end;
res.end = function(chunk,encoding){
res.end = end; //
res.end(chunk,encoding); //直接end(chunk,encoding)会出错
clearTimeout(timer);
};
next();
}
}
Bahagian komen adalah soalan saya, saya rasa ada sesuatu tentang ini pada akhirnya
Istilah "penutupan" berasal daripada gabungan blok kod yang akan dilaksanakan (kerana pembolehubah bebas terkandung dalam blok, pembolehubah bebas ini dan objek yang dirujuknya tidak dilepaskan) dan pengikatan yang disediakan untuk pembolehubah bebas . Persekitaran pengkomputeran (skop) ---Baidu Encyclopedia
Mari kita bincang tentang konsep penutupan dahulu
Pemahaman anda betul
,
Ini adalah proses pengesahan, sebabnya jika anda memanggil end terus, hujung ini ditinggalkan secara paksa kerana penutupan ini, jadi ia secara automatik akan mengikat persekitaran komputer, jadi ini adalah nanti Its this is Window, jadi panggilan tamat secara langsung akan menyebabkan ralat