Heim > Fragen und Antworten > Hauptteil
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 verstehephpcn_u15822017-07-03 11:44:55
闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域) ---百度百科
先说下闭包概念
你的理解没错
,
这个是验证过程,原因是因为如果你直接调用end,这个end是因为这个闭包强行留下来的,所以会自动绑定计算机环境,所以这是后他的this就是Window,所以直接调用end会出错