2015-06-25 43 views
0

我創建了一個像下面這樣的setInterval方法,我想隨時隨地停止它。順便說一句,該函數在if-else語句中,所以我不能訪問停止函數。如何在smartface中手動停止setTimeInterval函數?

怎麼可能?

var intervalID = setInterval(function() { 
      if (flag) { 
       stopTimer(); 
       Pages.Page1.Label1.text = ""; 
      } 
      if (time == 0) { 
       stopTimer(); 
       Pages.Page1.Label1.text = ""; 
       Device.makeCall(callNumber.rows[0][0]); 
      } else 
       updateTime(); 
     }, 1000); 

    function updateTime() { 
     time = time - 1; 
     Pages.Page1.Label1.text = time; 
    } 

    function stopTimer() { 
     clearInterval(intervalID); 
    } 

回答

0

只需將標記變量設置爲true即可。

flag = true;

或者,我會建議在if/else範圍之外聲明你的函數。

例如,創建一個定時器實例與啓動/停止方法爲這樣:

timer = function() {}; 

timer.prototype.start = function() 
{ 
    this.timerId = setInterval(function() { 
     /* ... */ 
     /* call to doWork here or simply your code */ 
    }, 1000); 
} 

timer.prototype.doWork = function() 
{ 
    // override here if you want and wall doWork in setInterval 
} 

timer.prototype.stop = function() 
{ 
    clearInterval(this.timerId); 
} 

var t = new timer(); 
// start the timer 
t.start(); 
// stop the timer 
t.stop(); 

這種方式可以處理你的計時器,只要你想。