2014-05-08 34 views
0

我有這樣的代碼:執行的AsyncCallback第一

searchButton.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 

      statusLabel.setText("Searching..."); 

      final String query = searchField.getText(); 
      RootPanel.get("flickr").clear(); 
      AsyncCallback<Flickr> ac=new AsyncCallback<Flickr>(){ 

       @Override 
       public void onFailure(Throwable caught) { 

       } 

       @Override 
       public void onSuccess(Flickr result) { 

        for(Photo p:result.getPhotos().getPhoto()) 
        { 
         flck.add(p); 
        } 
        statusLabel.setText(""); 
       } 
      }; 

      mashupService.getFlickrPhotos(query, ac); 

      if(!flck.isEmpty()) 
      { 
       for(int i=0;i<flck.size();i++) 
       { 
        RootPanel.get("flickr").add(new HTML("<img src='http://farm"+flck.get(i).getFarm()+".staticflickr.com/"+flck.get(i).getServer()+"/"+flck.get(i).getId()+"_"+flck.get(i).getSecret()+".jpg'/><br/>")); 

       } 
      } 

      } 
    }); 

我想首先執行的onSuccess(已flick.add)...但它執行後,如果(flck.isEmpty!)...我需要有數據flck但我不能......

當我按下secont時間相同的按鈕,flck有第一的onClick的數據...

在此先感謝

回答

1

移動內部的代碼onSuccess()方法取決於AsyncCallback的結果。


這是從名字明顯,AsyncCallback就像一個AJAX request,討論到服務器asynchronously意味着代碼的執行不連續的。

只需在onSuccess()方法內移動if(!flck.isEmpty)...即可。

+0

謝謝我的確做到了,我瘋了......但現在我必須將這些照片放在地圖上......我將把該代碼放在最後一個「onSuccess」 – Xito90