在非同步編程中,例如 AJAX 調用,從函數返回的變數並不立即可用,因為調用本身沒有立即執行。在 AJAX 呼叫的情況下,呼叫是非同步進行的,這表示它在背景執行,而其餘程式碼繼續運行。
您面臨的問題是提供的程式碼中的 get_data 函數嘗試直接傳回AJAX呼叫的結果。然而,由於呼叫是異步的,函數無法在返回之前等待結果。
要解決此問題,應修改 get_data 函數以使用回呼功能。回調函數是作為參數傳遞給另一個函數並在第一個函數完成後執行的函數。
在修改後的程式碼中:
function get_data(data, destination, callback) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data && callback) { callback(data); } } }); } }
要使用回呼呼叫 get_data 函數:
get_data(data, destination, function(test) { notice(test); });
在此範例中,是一個匿名回呼函數用於處理 AJAX 呼叫的結果。呼叫結果將傳遞給通知函數。
透過使用回調,get_data 函數可以發起 AJAX 呼叫並立即返回,而回調函數將在結果可用時執行。
以上是如何處理異步AJAX呼叫回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!