2016-04-23 63 views
0

我在庫文件中有這2個函數。一個啓動倒數計時器,另一個停止它。爲了能夠阻止它,我需要timeInterval的引用,因此必須使它成爲全局的。當然,這不是正確的做法。如果這些功能位於單獨的實用程序文件中,應如何處理?謝謝。刪除兩個函數使用的全局變量

var timeInterval; 

exports.stopTimer = function() { 
    clearInterval(timeInterval); 
}; 

exports.startTimer = function(duration, interval, displayElem, cbFinished, cbInterval) { 
    var timer = duration * 60, 
     interval = interval * 60, 
     minutes, 
     seconds; 
     timeInterval = setInterval(function() { 
     minutes = parseInt(timer/60, 10); 
     seconds = parseInt(timer % 60, 10); 
     minutes = minutes < 10 ? "0" + minutes : minutes; 
     seconds = seconds < 10 ? "0" + seconds : seconds; 
     displayElem.text = minutes + ":" + seconds; 

     if (--timer < 0) { 
      clearInterval(timeInterval); 
      if (cbFinished) { 
      cbFinished(); 
      } 
     } 
     if (timer == interval) { 
      if (cbInterval) { 
      cbInterval(); 
      } 
     }   
     }, 1000); 
}; 

回答

2

startTimer返回一個間隔和stopTimer採取一箇中的參數。

utils.js

exports.startTimer = function (...) { 
    return setInterval(function() { 
     ...  
    }, 1000); 
}; 

exports.stopTimer = function (interval) { 
    clearInterval(interval); 
}; 

foo.js

var utils = require('./utils'); 
var timer = utils.startTimer(); 
utils.stopTimer(timer); 
+0

謝謝GG ... –