早上好,等待函数在再次启动前完成
我想每次用户按下按钮时调用相同的函数。这是目前发生的事情..
用户点击按钮 - >通话功能 - >函数需要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