2013-05-14 18 views
0

在我的JavaScript,我有以下情形:如何推遲多個Ajax成功回調?

call_A(success_A) 

call_B(success_B) 


function call_A(success){ 
// make ajax request 
success(result) 
} 

function call_B(success){ 
//make ajax request 
success(result) 
} 


function success_A(){ 
    //set data to be used by success_B 
} 

function success_B(){ 
..do some stuff 
} 

我要讓對方後雙方call_Acall_B一個讓Ajax調用是由(爲了節省時間)。

我沒有選擇更改call_Acall_B函數標頭,因此必須調用這些函數來指定成功回調函數。

我想要的是,無論哪個2 ajax調用首先完成,我想在success_B之前調用success_A,因爲B依賴於A的數據。

完成這件事的最好方法是什麼?

+0

你可以使用jQuery嗎?它有$ .Deferred類,它爲這種情況增加了很多語法糖。 – syazdani

+0

另外,您應該重寫您的示例代碼以使用JavaScript。 def不是定義javascript函數的方式,所以它會讓你的問題有點令人困惑IMO。 – syazdani

回答

0
a_success= false; 
b_success= false; 

call_A(generalSuccess); 
call_B(generalSuccess); 

function call_A(success) { 
    // make ajax request 
    a_success = true; 
    success(result) 
} 

function call_B(success) { 
    //make ajax request 
    b_success = true; 
    success(result) 
} 

function generalSuccess() { 
    //assuming you are passing which a or b is called. set b_success or a_success is true 
    if (a_success == true && b_success == true) { 
     // use all variables you need and get the final result 
    } else if (a_success == true) { 
     // set your desired value into a global variable from a request 
    } else if (b_success == true) { 
     // set results to use from b request. 
    } 
}