[英]Running ajax request in javascript synchronously?
我的代碼有這個問題。 我有一個執行AJAX調用並調出接口的函數,並且AJAX被分離在另一個函數中。 我在某個地方調用它,並跟隨一些代碼。 這是一個例子:
function doAjaxStuff(){
//do something
}
function anotherFunction(){
doAjaxStuff();
//proceed with further code
}
(從$(document).ready
調用函數anotherFunction
)
由於進一步的代碼完全取決於我要加載的內容,例如我正在嘗試訪問一個元素,但尚未加載,這給了我null值,並且沒有任何效果。 因此,如果我可以等到我在anotherFunction
調用的函數完全執行后,對我來說將更容易處理。 我看過沒有錯誤的promises
有助於使代碼同步(無法理解如何實現)。 幫幫我!
您可以將回調函數作為參數傳遞給doAjaxStuff
,並在ajax請求完成時調用它。
function doAjaxStuff(callback) {
$.ajax({
success: function(data) {
// do some stuff with data
callback(data);
}
});
}
function anotherFunction() {
doAjaxStuff(function(data) {
alert(data);
})
}
在JavaScript中,函數也是對象,這意味着它們可以作為參數傳遞給另一個函數,也可以使用任何其他值來傳遞。 因此,在這種情況下,我們在doAjaxStuff
函數中有一個名為callback
的參數。 當ajax請求完成時,我們可以調用此作為參數傳遞的函數。
另一種方法是使用deferred
對象
function doAjaxStuff(){
return $.ajax(...);
}
function anotherFunction() {
$.when(doAjaxStuff()).then(function(){
// other code to run after ajax call
});
}
嘗試這樣的事情
$.ajax({
url:"demo_test.txt",
async:false,
success:function(result){
}
});
所有請求都是異步發送的(即默認情況下設置為true)。 如果需要同步請求,請將此選項設置為false
參考
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.