2013-03-27 74 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

相关问题