2011-07-05 182 views
2

我在我的傳統asp應用程序中使用ajax調用來執行存儲過程。
但我不想等到存儲過程正在運行(存儲過程需要大約5-10分鐘才能完成。)。
Ajax必須調用存儲過程並需要立即返回。
我希望Ajax調用不應該等待響應。Ajax調用不應該等待響應

這裏是我的代碼片段:

1) $.ajax({ 
    type: "POST", 
    url: "runstoredprocedure.asp", 
});  
2) setInterval(function(){ jQuery("#list").trigger("reloadGrid"); },10000); 

這些都是我使用兩個Ajax調用。第一個約5-7分鐘。第二個在第一個完成之前不會開火。但是立刻我需要調用第二個Ajax調用。

任何人都可以幫助我解決這個問題。

回答

2

AJAX默認是異步的(並且它是所有javascript庫中的默認選項)。例如,在jQuery中:

$.ajax({ 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

您已成功,需要回調。當你的動作完成時,回調將被調用。 jQuery將立即返回。

+0

我usingthe falowing $阿賈克斯({ 類型: 「POST」, 網址: 「P ... te.asp」 });但我發現使用fire bug這個ajax調用運行很長時間。 – vissu

+0

@vissu pepala,編輯您的問題以添加您正在使用的代碼段。這是從評論中看不到的。 – Senthess

+0

我已編輯。 @Senthess,你現在能看到嗎? – vissu

3

javascript會將請求作爲不同線程的一部分觸發,並且您的ajax調用之後的任何代碼將立即執行。話雖如此,有關JS異步的一種誤解:

People take for granted that because it’s asynchronous, it’s a thread. They are partially right. There must be a thread created by the browser to keep the javascript running while it makes a request to the server. It’s internal and you don’t have access to that thread. But, the callback function called when the server responds to the ajax request is not in a thread. 

I’ll explain clearer. If javascript runs some code that takes 5 seconds to execute and an ajax response arrives at 2 seconds, it will take 3 seconds before it will be executed (before the callback function is called). That’s because javascript itself doesn’t create a thread to execute the ajax response from the server and simply waits that all executions are terminated before starting a new one. 

So if you’re running a lot of ajax requests simultaneously, you might get some weird behavior because they will all wait one on another before executing themselves. 

最後一條語句與您的原因相關。從博客

摘錄:http://www.javascriptkata.com/2007/06/04/ajax-and-javascript-dont-use-threads/

有趣的閱讀:http://www.javascriptkata.com/2007/06/12/ajax-javascript-and-threads-the-final-truth/