早上好,
每次用户按下按钮时,我都会尝试调用相同的功能。这是目前发生的事情..
用户点击按钮 - >通话功能 - >函数需要1000ms +才能完成(由于使用jQuery和AJAX调用动画)
我想要发生的是每次用户按下按钮时,它会将功能添加到队列中,等待上一次调用完成,然后启动..
这可能吗?
很抱歉,如果我的解释有点令人困惑......
谢谢Matthew
答案 0 :(得分:6)
由于函数是对象,因此它们可以存储属性。每次调用(按下按钮),然后在函数执行结束时,你可以让你的函数在自身上增加一个'queue'属性,检查它自己的队列属性是否为>如果是,则将queue属性减1并使用setTimeout
再次调用自身。
答案 1 :(得分:0)
我最近不得不在自己的应用程序中这样做。我给你的最好的建议是(假设你已经在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.
}
答案 2 :(得分:0)
你可以为制作动画的人添加一个回调函数,一旦动画完成它所调用的回调,你就可以做你想做的事。
以下是jquery docs的一个例子:
$('#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
答案 3 :(得分:0)
您可以跟踪每次用户按下按钮时添加到队列的全局队列/数组,然后您需要在函数中进行回调(例如在jQuery的success
回调中)它负责检查队列并调用队列中的下一个函数。
答案 4 :(得分:-1)
单击按钮时禁用该按钮。在ajax例程完成时启用它。