0
我有這個JavaScript代碼,我想改變成一個隊列系統。目前我不得不像這樣編碼。當有很長一段時間的請求時,它會變得混亂。 注意:我的函數請求返回json對象。 將異步設置爲false不用於跨域jsonp調用,因此無法工作。 調用必須按此順序進行。 jquery隊列不會工作。需要Javascript ajax隊列系統。跨域jsonp。我將如何做到這一點。
var customers;
var orders;
var products;
function GetCustomers(){
$.ajax({
url: somecrossdomainurl?calback=GetCustomerCallback,
dataType: 'jsonp',
async: false
});
}
function GetCustomerCallback(data){
customers=data;
GetCustomersOrder();
}
function GetCustomersOrder(){
$.ajax({
url: somecrossdomainurl?calback=GetCustomersOrderCallback,
dataType: 'jsonp',
async: false
});
}
function GetCustomersOrderCallback(data){
orders = data;
GetOrderProducts();
}
function GetOrderProducts(){
$.ajax({
url: somecrossdomainurl?calback=GetOrderProductsCallback,
dataType: 'jsonp',
async: false
});
}
function GetOrderProductsCallback(data){
products = data;
DisplayCustomersAndOrder();
}
function DisplayCustomersAndOrder(){
//loop round customer,order,products and display info
}
//I want to do something like this:
function DisplayData(){
var queue;
queue.GetCustomer();
queue.GetCustomersOrders();
queue.GetOrderProducts();
queue.DisplayCustomersAndOrder();
queue.Start()
}
任何建議
使用jQuery的[遞延對象(http://api.jquery.com/category/deferred-object/)。 –
會使用jsonp工作 – zee
可能它是一個簡化的API,'$ .ajax'總是返回一個承諾對象。試一試 :) –