2016-05-26 42 views
0

我已閱讀了很多關於此主題的問題。但沒有人有我的問題。 Actualy我有這個在我的主要代碼:如何使用返回值調用像Ajax這樣的異步調用時等待代碼

// getHtmlInfoWindows has inside an ajax request 
var infowindowString = getHtmlInfoWindow(selectedTrucks[i], true); 
makeInfoWindowEvent(map, infowindow[i], infowindowString, markers[i], "click"); 

這裏getHtmlInfoWindows()代碼

$.ajax({ 
    url: ajaxUrl, 
}) 
.done(function(data) { 
    // some line of code and operation 
    return someData; 
} 

基本上我會等到getHtmlInfoWindow()完成和下一次執行makeInfoWindowEvent(),但我不不知道如何。

我已經試過這樣:

$.when(infowindowString = getHtmlInfoWindow(selectedTrucks[i], true)).done(function(){} 

但doen't工作,因爲要返回intere Ajax響應,而不是單個值「someData」我想要的。 我該怎麼辦?

謝謝你們

+0

'getHtmlInfoWindows( )'不管你等多久都不會返回任何東西。 – JJJ

+0

您可以同步調用(調用代碼等待請求完成)通過jQuery AJAX方法是這樣的: $阿賈克斯({ URL: 「/ API /功能」, 異步:假 })。有(函數(){ //處理結果... }); 注意參數對象的'async'屬性。雖然這個方法自jQuery 1.8以來已被棄用,應該避免。 更多詳細信息: http://api.jquery.com/jquery.ajax/ – Alexey

回答

1

傳給你想作爲一個回調函數要執行的代碼:

// getHtmlInfoWindows has inside an ajax request 

var callback = function(data){ 
    makeInfoWindowEvent(map, infowindow[i], data, markers[i], "click"); 
} 

getHtmlInfoWindow(selectedTrucks[i], true, callback); 

,然後調用你的回調時,阿賈克斯完成:

$.ajax({ 
    url: ajaxUrl, 
}) 
.done(function(data) { 
    // some line of code and operation 
    callback(data); 
} 
+0

好吧,它的工作!謝啦! –