javascript - Problème d'utilisation du module de connexion NodeJS
漂亮男人
漂亮男人 2017-07-03 11:42:55
0
1
967

Je suis nouveau sur nodejs. Il existe un tel morceau de code dans l'incroyable NodeJS, qui utilise un middleware pour réaliser l'impression de la console lorsque le temps de demande de code est trop long

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

La partie commentaire est ma question. Je suppose qu'il y a quelque chose à ce sujet au final, je ne sais pas si je comprends bien

.
漂亮男人
漂亮男人

répondre à tous(1)
phpcn_u1582

Le terme « fermeture » vient de la combinaison d'un bloc de code à exécuter (car les variables libres sont contenues à l'intérieur du bloc, ces variables libres et les objets auxquels elles font référence ne sont pas libérées) et de la liaison prévue pour les variables libres Environnement informatique (portée) ---Encyclopédie Baidu

Parlons d’abord du concept de fermeture

Votre compréhension est correcte
,
Il s'agit du processus de vérification, la raison en est que si vous appelez end directement, cette extrémité est quittée de force à cause de cette fermeture, elle sera donc automatiquement liée à l'environnement informatique, donc ceci est le plus tardif. C'est Window, donc appeler end directement provoquera une erreur

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal