2013-02-17 60 views
0

好的,GWT中沒有同步調用。GWT - 方法的同步返回

但是,如果我有這樣的事情:

class XXX { 
    Config c=new Config(); 
    c.doSomething(); 
} 

和類配置

public class Config { 


    private static HashMap<String,String> map; 

    public Config(){ 
     final ServerProxyAsync serverProxy= GWT.create(ServerProxy.class); 
     serverProxy.getParameters(new AsyncCallback<HashMap<String,String>>() { 
      @Override 
      public void onFailure(Throwable caught) { 
       System.out.println("getParameters: FAILED!"); 
       map=null; 
      } 

      @Override 
      public void onSuccess(HashMap<String, String> result) { 
       System.out.println("getParameters: OK!"); 
       map=result; 
       // RETURN NOW!!!! 

      } 

     }); 
    } 

如果異步調用不會終止我不能這樣做doSomething(),因爲有時該方法在地圖初始化之前調用。 有沒有辦法?

回答

0

只需擴展您的Config類即可獲得RunnableCallback。事情是這樣的:

public class Config { 

    private static HashMap<String,String> map; 

    private final Runnable callback; 

    public Config(Runnable callback){ 
     this.run = run; 
     final ServerProxyAsync serverProxy= GWT.create(ServerProxy.class); 
     serverProxy.getParameters(new AsyncCallback<HashMap<String,String>>() { 
      @Override 
      public void onFailure(Throwable caught) { 
       System.out.println("getParameters: FAILED!"); 
       map=null; 
      } 

      @Override 
      public void onSuccess(HashMap<String, String> result) { 
       System.out.println("getParameters: OK!"); 
       map=result; 
       callback.run(); 
      } 
     }); 
    } 
} 

然後你可以使用它像這樣:

class XXX { 
    final Runnable callback = new Runnable() { 
     @Override 
     public void run() { 
      dosomething1(); 
     } 
    }; 
    Config c=new Config(callback); 
} 
1

0123如何在onSuccess()doSomething()

即使你做當你需要這個,你必須做你的RPC調用的onSuccess();的東西,它somehowits不是一個好的做法

不能使用synchronous call in GWT.

所以,最好的辦法是簡單地使用異步方法,並繼續通過回調執行provided.You將最終獲得更好的用戶體驗,以及更加專業的出現
應用。

+0

謝謝您的回答。 不幸的是,我不能把doSomething()放在onSuccess()中,因爲有時候我需要調用doSomething1()和某個時候doSomething2()... 配置它是一個初始化應用程序的一些參數的類,我需要將其用於不同的目的。 – 2013-02-17 14:32:55

+1

@ nap.gab我認爲你所說的並不是一個無法解決的問題。我遇到了發展GWT的這些問題,我可以解決它們。也許你應該問一個新的,更具體的問題和更多的細節。 – qben 2013-02-17 15:21:23