如何阻止函数运行?

时间:2011-01-31 12:46:52

标签: jquery

我有一个功能,但即使我呼叫stop()它也会继续运行。 函数名称为function slide() { //codes here }

slide().stop();

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

4 个答案:

答案 0 :(得分:10)

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

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

关于如何使用.queue已经有很好的答案所以我会指出你的问题:Can somebody explain jQuery queue to me? - 看看gnarf的答案。

答案 1 :(得分:5)

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

答案 2 :(得分:2)

有同样的问题,在阅读 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

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

答案 3 :(得分:1)

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

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

长时间运行的功能将被浏览器中断,询问用户是否希望脚本继续执行或停止执行(浏览器假定执行已挂起,如无限循环中那样)。

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