2011-10-01 48 views
2

我很好奇,如果這被認爲是好的做法或什麼可能會更好。比方說,我必須在連續進行兩個或更多的ajax調用並等待所有完成才能繼續。同樣在這種情況下,我使用JSONP來調用獨立端口上的服務(同源策略)。Javascript/jQuery ajax調用同步的常見做法

$(document).ready(function() { 

    var semaphore = 0; 

    var proceed = function() { ... }; 

    goAjax('arg0', function(data) { 

     semaphore++; 
     checkStatus(semaphore, proceed); 
    }); 

    goAjax('arg1', function(data) { 

     semaphore++; 
     checkStatus(semaphore, proceed); 
    }); 

} 

function checkStatus(sem, callback) 
{ 
    if (sem == 2) 
    { 
     callback(); 
    } 
} 

function goAjax(args, callback) { 

    $.ajax({ 
       ... 

       dataType: "jsonp", 
       success: function(data) { 
           callback(data);       
       },   
      }); 
} 
+0

什麼問題呢? ... – hugomg

回答

0

雖然我寧願將這兩個請求一起批量處理,但我看不出你在做什麼問題。通過批處理,我的意思是將它合併到一個調用中,並在處理請求的服務器中進行兩個服務調用,這兩個服務調用可以單獨調用,然後在一個回調中處理。不得不等待這兩個調用在javascript中完成,這使得它們成爲異步(ajax)調用的全部目的。這兩個調用可能在某些情況下被分開調用,但是在您的javascript和服務中添加一些機制來處理一個調用中的多個請求並不會造成什麼影響,例如適用的情況。

0

我用after此功能

$(document).ready(function() { 
    var proceed = function() { ... }, 
     next = after(2, proceed); 

    goAjax('arg0', function(data) { 
     next(); 
    }); 

    goAjax('arg1', function(data) { 
     next(); 
    }); 
}