javascript - Masalah penggunaan modul sambungan NodeJS
漂亮男人
漂亮男人 2017-07-03 11:42:55
0
1
968

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

漂亮男人
漂亮男人

membalas semua(1)
phpcn_u1582

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan