2011-03-25 45 views
0

嗯,我知道標題是不是最好的,但我會盡可能明確:jQuery的 - 又與Ajax調用的函數,syncronous

我有做一些東西的功能,然後用回調進行ajax調用;我不想讓這個Ajax調用syncronous。我需要的是這樣的:

function theFunctionToCall(){ 
    //do stuff 
    $.post('ajax.php',data, function(){ 
    //mycallback; 
    }) 
} 

execute(theFunctionToCall, function(){ 
    //code to execute after the callback from theFunctionToCall is complete 
}) 

這甚至可能嗎?怎麼樣?

謝謝

+0

的[我如何返回從一個異步調用的響應?(可能的複製http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an - 異步呼叫) – mhatch 2016-06-30 14:54:15

回答

1

只要有你的函數接受一個參數傳遞下去回調函數:

function theFunctionToCall(data, fn) { 
    $.post('ajax.php', data, fn); 
} 

雖然我沒有看到特別的優點,就是想有附加功能的委託這AJAX方法是什麼通過哪些回調。

+0

這是我正在尋找的答案。感謝名單 – 2011-03-27 21:11:24

1

您可以使用jQuery的.queue()進行函數調用中指定的順序運行。

$(document).queue('AJAX', function(next){ 
    $.post('ajax.php',data, function(){ 
     // Callback... 
     next(); // Runs the next function in the queue 
    }); 
}); 

$(document).queue('AJAX', function(next){ 
    // This will run after the POST and its callback is done 
    next(); // Runs the next function, or does nothing if the queue is empty 
}); 

$(document).dequeue('AJAX'); // Runs the 1st function in the queue 
1
function execute(first, callbackFn) { 
    first.call(null, callbackFn); 
} 

function theFunctionToCall(callbackFn){ 
    //do stuff 
    $.post('ajax.php',data, callbackFn) 
} 

execute(theFunctionToCall, function(){ 
    //code to execute after the callback from theFunctionToCall is complete 
})