javascript - NodeJS connect模塊use的問題
問題描述
初學(xué)nodejs,在了不起的NodeJS有這樣一段代碼,通過中間件,實(shí)現(xiàn)代碼請求時(shí)間過長的控制臺(tái)打印
//request-time.jsmodule.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)會(huì)出錯(cuò) clearTimeout(timer);};next(); }}
注釋的部分就是本人的疑問,猜測是end里有this的一些東西,不知道理解對不對
問題解答
回答1:閉包” 一詞來源于以下兩者的結(jié)合:要執(zhí)行的代碼塊(由于自由變量被包含在代碼塊中,這些自由變量以及它們引用的對象沒有被釋放)和為自由變量提供綁定的計(jì)算環(huán)境(作用域) ---百度百科
先說下閉包概念
你的理解沒錯(cuò),這個(gè)是驗(yàn)證過程,原因是因?yàn)槿绻阒苯诱{(diào)用end,這個(gè)end是因?yàn)檫@個(gè)閉包強(qiáng)行留下來的,所以會(huì)自動(dòng)綁定計(jì)算機(jī)環(huán)境,所以這是后他的this就是Window,所以直接調(diào)用end會(huì)出錯(cuò)
相關(guān)文章:
1. javascript - npm下載的模塊不完整是什么問題?2. java - Spring事務(wù)回滾問題3. 正兒八經(jīng)地請教天蓬老師4. mysql優(yōu)化 - 關(guān)于mysql分區(qū)5. 求解改變某值6. MySQL數(shù)據(jù)庫服務(wù)器循環(huán)插入執(zhí)行速度慢7. node.js - 我想讓最后進(jìn)入數(shù)據(jù)庫的數(shù)據(jù),在前臺(tái)最先展示,如何做到?8. python 操作mysql如何經(jīng)量防止自己的程序在之后被惡意注入(說白了就是問一下python防注入的一些要點(diǎn))9. django進(jìn)行數(shù)據(jù)庫的查詢10. 剛放到服務(wù)器的項(xiàng)目出現(xiàn)這中錯(cuò)誤,有高手指點(diǎn)嗎
