2015-10-14 43 views
0

在我的代碼中,我使用異步調用來進行驗證。根據驗證的返回值,我需要執行一些行。 但我不能把這些行放在Async = public void success(布爾有效)的回調方法中。如何在異步調用後在GWT中等待一段時間

由於其中一行是super.onDrop(context),它是不能在Async回調方法內調用的另一個類的方法。

請看下面的行。我需要super.onDrop(上下文)將在異步調用完成後執行。

stepTypeFactory.onDropValidation(stepTypeFactory,new AsyncCallbackModal(null) { public void success(Boolean valid) { if(valid==Boolean.TRUE){ //super.onDrop(context); } }; });

//condition is here super.onDrop(context);

有什麼辦法,我會告訴執行super.onDrop(上下文)之前GWT等待1或2秒。現在發生了什麼, super.onDrop(context)在回調方法完成之前執行。

回答

1

你可以這樣做:

stepTypeFactory.onDropValidation(stepTypeFactory,new AsyncCallbackModal(null) { 
    public void success(Boolean valid) { 
     if(valid==Boolean.TRUE){ 
      drop(); 
     } 
    }; 
}); 

private void drop() { 
    super.onDrop(context); 
} 
+0

它正在爲我工​​作。它完全滿足了我的要求。 :) – user1346346

+0

只是想知道:難道你不能使用合格的超級? 'ContainingClass.super.onDrop(上下文)' –

1

另一種解決辦法是,像托馬斯Broyer在評論中提到:使用代碼完成時

stepTypeFactory.onDropValidation(stepTypeFactory,new AsyncCallbackModal(null) { 
    public void success(Boolean valid) { 
     if(valid==Boolean.TRUE){ 
     ContainingClass.super.onDrop(context); 
     } 
    }; 
}); 

Eclipse不建議這種解決方法,但有用。

另外我可能會重新考慮你的設計,因爲當你有很多回調/連接類時,它會變得非常棘手(通過經驗)。但這只是一個快速的想法,我不知道你的項目的大小和設計。