如何阻止函数运行?

我有一个function,但即使我调用stop()它也会继续运行。 函数名称是function slide() { //codes here }

 slide().stop(); 

如何阻止它运行?
以及如何在停止后再次运行它?
所以我将完全控制它。

.stop是一种停止在当前元素上异步(在后台)运行的动画的方法。 它不会中断/停止任何其他未使用效果库的代码。

相反,您应该查看.queue ,它可以让您设置可以清除或出列的自定义队列。

关于如何使用.queue已经存在很好的答案,所以我会指出你的问题: 有人可以向我解释jQuery队列吗? – 看看gnarf的答案。

如果它在滑动function中遇到某种情况,只需使用return; 退出函数的语句。 然后再次启动它只需调用函数slide() 。 您不能使用函数外部的代码使其退出,它必须在函数内。

有同样的问题,在阅读了amurra的最后一个答案后,这就是我所做的……

通过将其附加到“window”对象来声明全局变量。 这将作为一个标志,并决定是继续调用’slide_it()’函数还是停止它(返回)

 window.slide_it = true; $(element).on({ mouseenter: function() { window.slide_it = true; slide_it(); } mouseleave: function() { window.slide_it = false; } }); function slide_it () { if( !window.slide_it ) return false; $(element).stop().animate( { 'left':'-=5px' }, 100, function() { slide_it() } ); } 

在$(元素)上输入鼠标后,slide_it()函数将自行迭代。 并且仅当window.slide_it设置为false时它才会停止。 所以你只需在“mouseleave”时将window.slide_it设置为false

希望它可以帮助其他人解决问题!

如果你的函数是一个长期运行的javascript进程,你应该在其中放置一些外部钩子来阻止它的执行过程并在需要时继续。 如果你有一个while循环,你应该检查外部条件,以停止执行。 如果你没有经常意义上的循环,你将不得不找到一些其他方法来检查函数的运行状态调节。

通常无法在Javascript中中断正在运行的函数 。 不是没有任何额外的代码。

漫长的运行function将被浏览器通过询问用户是否希望脚本继续执行或者更确切地停止它来中断(浏览器假定执行在无限循环中被挂起)。

如果你在Javascript中有一个长时间运行的函数,你应该将function分成几个部分,并使用javascript线程技术,通过window.setTimeout(function, delay);一个接一个地延迟执行短函数window.setTimeout(function, delay);