2012-12-07 73 views
1

我被困在jQuery的1.4.3目前的一個項目,需要就如何更好地協調以下一些建議..JQuery的,功能編排

比方說,我有兩個功能都爲之進行Ajax調用,和我只有在第一個成功時纔打電話給第二個。這就是說,我的應用程序中也有一些時候,我會打電話函數a而不需要調用函數b。因此,將第二個函數的調用放在第一個函數成功方法中是沒有意義的。

我想這樣做,

function doStuff(){ 
    functionA().success(functionb()).failure(); 
} 

我通常使用.done編排();但是這是在jQuery 1.5中引入的,而且現在我又陷入了1.4.3。

回答

1

確定在functionA()成功處理程序中調用它是有道理的。只要有條件地打電話。

// Set a variable to determine if you will need to call functionB() 
var youNeedToCallFunctionB = true; 
// And call functionA() 
functionA(); 

// Function definition: 
function functionA() { 
    $.ajax({ 
    url: ..., 
    success: function() { 
     if (youNeedToCallFunctionB) { 
     // Call functionB() in the success handler when needed... 
     functionB(); 
     } 
    } 
    }); 
} 

functionB() { 
    // Some other AJAX call... 
} 

更妙的是,參數傳遞給functionA()這決定是否要叫functionB()

functionA(youNeedToCallFunctionB) { 
    // same thing as above, but pass the parameter 
} 

// Called as 
functionA(true); 
+0

謝謝,我想我一直在尋找更多的是「服務」型圖案,但是這很有趣,也許是在JS中做到這一點的最好方法。 –