2013-03-27 127 views
0

我正在使用Backbone.js,並且處於一個條件,我的主要函數調用this.search.searchGoogle(searchTerm)觸發了其他函數調用。但是,在我的主要函數調用之後的下一行是另一個函數調用,this.search.cleanView,。問題是有時在主函數完成之前調用第二個調用。如何在第一個函數完成後觸發函數調用

addNewPlace: function(e) { 

     var searchTerm = this.$el.find("input").val(); 
     var poi = new vrboPoi({ 
     title: searchTerm, 
     lat: this.options.vrbo_place.lat, 
     lng: this.options.vrbo_place.lng 
     }); 


     var target = $(e.target), 
      index = target.closest("ul.pois").children().index(target.parent()) 
     this.search = new match({ 
     model: poi 
     }); 

     this.search.render(); 

     this.search.searchGoogle(searchTerm);   
     this.search.bind("place:selected", this.placeSelected, this); 

     // setTimeout( 
     // this.search.cleanView, 500 
     // ); 
     e.preventDefault(); 
    } 

有沒有辦法來防止調用,直到this.search.searchGoogle(searchTerm)this.search.cleanView完成?

回答

1

如果它是異步的,則不適用。您必須讓searchGoogle接受回電或舉辦活動。

+2

另一種選擇是使用jQuery的promise/Deferred對象。 [鏈接](http://api.jquery.com/category/deferred-object/) – fiskers7 2013-03-27 16:30:26

相關問題