javascript – Problem bei der Verwendung des NodeJS-Verbindungsmoduls
漂亮男人
漂亮男人 2017-07-03 11:42:55
0
1
1025

Ich bin neu bei NodeJS. Es gibt so einen Code in der erstaunlichen NodeJS, der Middleware verwendet, um das Drucken auf der Konsole zu realisieren, wenn die Codeanforderungszeit zu lang ist

//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(); 
    }
}

Der Kommentarteil ist meine Frage. Ich weiß am Ende nicht, ob ich das richtig verstehe
漂亮男人
漂亮男人

Antworte allen(1)
phpcn_u1582

闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域) ---百度百科

先说下闭包概念

你的理解没错

这个是验证过程,原因是因为如果你直接调用end,这个end是因为这个闭包强行留下来的,所以会自动绑定计算机环境,所以这是后他的this就是Window,所以直接调用end会出错

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage