基本上我希望能够将任何命令包装在 $.holdTillFinished() 方法中,该方法将不允许继续执行,直到指定的方法/jquery 动画完成执行。

我怀疑这在 javascript 中可能很困难甚至不可能,但我希望有人会知道。

我不想听到如何将回调传递到动画中以使其完整运行,或类似的任何内容。

我真的很想知道这样的事情是否可能以及如何去做。

如果这种情况不会发生,如果有人知道一个很好的队列插件能够对用户定义的方法和动画进行排队,那也很酷。我真正想要的是一种延迟执行的方法。(同时仍然允许动画运行)

有帮助吗?

解决方案

我怀疑这在 javascript 中可能很困难甚至不可能

你的怀疑是正确的。动画、用户输入循环和“async=true”XMLHttpRequests 等方法 必须 将控制权返回给浏览器以便继续,并且浏览器在函数调用的每个嵌套级别都返回之前无法重新获得控制权。这意味着您的所有代码,包括调用“holdTillFinished()”的函数都必须展开:因此‘holdTillFinished()’是不可能的。

其他语言具有流控制功能,允许您有效地执行异步进程,就像调用者看来是同步的一样,反之亦然。最有名的是 线程延续. 。JavaScript 不具备这些功能,因此您能做的最好的事情就是超时和回调。

(将回调定义为内联函数以访问闭包中封闭函数的变量至少可以减轻一些痛苦;其他一些语言必须开始将每一位封闭状态包装在对象的属性中才能实现这一点。)

其他提示

有守时的情况,但通常当AJAX调用或任何环路以JavaScript执行它是必要显示的处理的图像上显示。我在那里我打电话AJAX在一个循环中,为用户显示处理的图像显示的情况。要终止我做了一招。我已经把一个按钮来取消作业时,这个函数被调用我设置一个全局变量说真,在我检查这个全球环路“cancelJob”如果这是真的跑返回false和脚本将停止。

var cancelJob = false;
foreach(){
   if(cancelJob == true)
       return false;
}

function cancelButtonPress(){
   cancelJob = true;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top