早上好,等待函數在再次啓動前完成
我想每次用戶按下按鈕時調用相同的函數。這是目前發生的事情..
用戶點擊按鈕 - >通話功能 - >函數需要1000毫秒+完成(由於與jQuery和AJAX調用動畫)
我希望發生的是每次用戶按下按鈕,它將功能添加到隊列中,等待先前的呼叫完成,然後開始。
這可能嗎?
很抱歉,如果我的解釋是有點混亂..
感謝馬修
早上好,等待函數在再次啓動前完成
我想每次用戶按下按鈕時調用相同的函數。這是目前發生的事情..
用戶點擊按鈕 - >通話功能 - >函數需要1000毫秒+完成(由於與jQuery和AJAX調用動畫)
我希望發生的是每次用戶按下按鈕,它將功能添加到隊列中,等待先前的呼叫完成,然後開始。
這可能嗎?
很抱歉,如果我的解釋是有點混亂..
感謝馬修
由於函數是可以存儲屬性的對象。每次調用它時(按鈕按下),然後在函數執行結束時,您可以讓函數爲其自身增加一個「隊列」屬性,檢查自身的隊列屬性是否大於0,如果是,則遞減隊列屬性由一個和使用setTimeout
再次自己調用。
做到這一點的最好方法是使用setTimeout調用。另外,這是堆棧溢出的祕訣。 ;-) – draeton 2010-12-23 03:37:25
最近,我不得不這樣做在我自己的應用程序。我給你的最好的建議是(假設你已經在JavaScript函數中有你的AJAX調用)將回調函數參數傳遞到你的JavaScript函數中。然後,在您的AJAX調用的success
部分中,調用您的回調函數。
例子:
// In HTML <script> tags.
$(document).ready(function() {
$("button#queue").click(function() {
GetMembers(GetGroups(), MemberCallback));
});
});
function GetMembers(userId, callback) {
$.ajax({
//Initialized AJAX properties
url: "/My/Project/Ajax/Page.extension",
data: "{ 'groupId':'" + groupId + "'}",
success: function (result) {
callback(result.d);
}
});
}
function MemberCallback(members) {
// Do your thing here.
}
你可以添加一個回調函數來那個令動畫,一旦動畫完成,它被稱爲所以你可以做你想做的回調。
這裏遵循從jQuery文檔的例子:
$('#clickme').click(function() {
$('#book').animate({
opacity: 0.25,
left: '+=50',
height: 'toggle'
}, 5000, function() {
// Put your code here, so it will be executed once the animation completes
});
});
P.S:晨?它幾乎是午夜; D
:D在這裏也幾乎是午夜。順便說一句,我想他不知道(該動畫完成時)是否再次按下按鈕。 – 2010-12-22 22:52:08
您可以跟蹤每次用戶按下按鈕時添加到隊列中的全局隊列/數組,然後您需要在函數中進行回調(例如在success
回調中對於jQuery)來完成工作來檢查隊列並調用隊列中的下一個函數。
不需要全局命名空間污染:只需將屬性添加到與其一起工作的對象即可。 – 2010-12-22 22:49:45
當他們點擊按鈕時禁用按鈕。當ajax例程完成時啓用它。
你想排隊的動畫和ajax正確嗎? – Cole 2010-12-22 22:39:26