jQuery - 使用ajax调用转换函数,同步

时间:2011-03-25 16:53:08

标签: jquery

好吧,我知道标题不是最好的,但我会尽可能清楚:

我有一个函数可以执行一些操作,然后使用回调进行ajax调用;我不想让那个ajax调用同步。我需要的是:

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

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

这甚至可能吗?如何?

谢谢

3 个答案:

答案 0 :(得分: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 :(得分:1)

让你的函数接受一个参数来传递回调函数:

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

虽然我没有看到试图让其他函数委托哪些ajax方法传递哪些回调的特殊优势。

答案 2 :(得分: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
})