在重新开始之前等待function完成

早上好,

每次用户按下按钮时,我都会尝试调用相同的function。 这是目前发生的事情..

用户点击按钮 – >调用函数 – >函数需要1000ms +才能完成(由于使用jQuery和AJAX调用动画)

我想要发生的是每次用户按下按钮时,它会将function添加到队列中,等待上一次调用完成,然后启动..

这可能吗?

对不起,如果我的解释有点令人困惑..

谢谢马修

由于函数是对象,因此可以存储属性。 你可以让函数在每次调用(按下按钮)时自动增加一个’queue’属性,然后在函数执行结束时检查它自己的队列属性是否> 0,如果是,则减少队列属性一个并使用setTimeout再次调用自身。

你可以为制作动画的人添加一个回调函数,一旦动画完成它所调用的回调,你就可以做你想做的事。

以下是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 }); }); 

PS:早上好吗? 快到午夜了; D

您可以跟踪每次用户按下按钮时添加到队列的全局队列/数组,然后您需要在函数中进行回调(例如在jQuery的success回调中)以执行要检查的工作队列并调用队列中的下一个函数。

我最近不得不在自己的应用程序中执行此操作。 我给你的最佳建议是(假设你已经在JavaScript函数中进行了AJAX调用)将回调函数参数传递给JavaScript函数。 然后,在AJAX调用的success部分中,调用您的回调函数。

例:

 // In HTML  

单击按钮时禁用该按钮。 在ajax例程完成时启用它。