如何清除node.js中的超时

| 嗨,我们正在开发node.js,socket.io和redis中的应用程序。 我们有这个程序:
exports.processRequest = function (request,result) {
     var self = this;
     var timerknock;
     switch(request._command) {
    case \'some command\': // user login with username 
            // some statement 
            timerknock=setTimeout(function() {
                //some  statemetn
            },20*1000);
        case \'other command \':
            // some statement    
            clearTimeout(timerknock);
      }
};
但是,当它取消计时器时,它在执行其他命令时并没有被取消,我该怎么做才能取消计时器?     
已邀请:
        看起来您没有
break
语句,这会引起问题(当您尝试清除计时器时,它将创建一个新计时器并清除它,但旧计时器仍将运行)。也许这是一个错字。 您的主要问题是您将计时器“参考”存储在本地变量中。这必须是封闭的或全局的,否则执行函数以清除变量时,,2ѭ将丢失其值,并且将尝试和and3ѭ,这当然是没有用的。我建议一个简单的关闭:
exports.processRequest = (function(){
   var timerknock;
   return function (request,result) {
      var self = this;
      switch(request._command) {
      case \'some command\': // user login with username 
         // some statement 
         timerknock=setTimeout(function() {
            //some  statemetn
         },20*1000);
      case \'other command \':
         // some statement    
         clearTimeout(timerknock);
      }
   };
})();
请注意,这也是一种非常简单的方法,如果在当前定时器执行完毕之前设置了定时器,则会丢失对该定时器的引用。尽管您可能尝试使用计时器引用的对象/数组来实现这一点,但是这对您来说可能不是问题。     

要回复问题请先登录注册