2013-04-26 26 views
4

我試圖安排在GWT重複的計時器,它將運行每一毫秒,輪詢一個特定的事件,一旦發現滿意的,做一些事情,取消計時器。 我試着這樣做:無法取消重複計時器在GWT

final Timer t = new Timer() { 
    public void run() { 
     if (..condition is true, exit) { 
      t.cancel(); 
      doSomething(); 
     } 
    } 
} 
t.scheduleRepeating(1); 

不過,我得到局部變量t可能沒有被初始化像錯誤消息。我把那朵一段代碼RequestBuilder回調onSuccess子句中..我該如何實現這一目標?

回答

7

初始化本身時無法訪問它。

更改您的代碼

final Timer fgf = new Timer() { 

      @Override 
      public void run() { 
        cancel(); 
        System.out.println(); 

      } 
     }; 
+3

或者換句話說:'的this'代替't'。 – 2013-04-26 16:13:57

+1

哦,我不知道我可以調用它自己內部'run'..Thanks的'cancel'功能! – SexyBeast 2013-04-26 17:51:46

+0

當取消執行則計時器將停止工作過程()的函數。但是當再次啓動計時器時,我將從舊數據開始。爲什麼時間表現如此呢? – 2015-11-09 12:12:33