回调重叠

时间:2013-01-22 10:01:11

标签: javascript jquery

我有一个简单的可调整大小的div(用jQuery's resizable实现),我正在使用函数处理resize事件。

所以,让我们说这是我的代码:

var a = ...
$(div).resizable({ 
    options go here...

    resize: function(e, ui){
        make some operations with a
        ...
        ...
        keep making operations with a
        ...
        ...
        ok, we're done
    }
})

现在,假设调整大小的回调在很短的时间内被调用很多次。 javascript将如何处理?回调会重叠使用“a”吗? (注意“a”是全局var!)。 我对此代码是否安全,或者可能存在某种冲突?

此致

2 个答案:

答案 0 :(得分:2)

如果您询问线程安全性,JavaScript是单线程的。这样的函数一次只能运行一个,无论它被调用的频率如何。

所以你应该安全。

答案 1 :(得分:1)

JavaScript是单线程的,因此函数调用不能“重叠”。如果多次触发事件,那么函数将完全执行(减去它可能调用的任何异步函数)以响应第一次触发,然后再次执行以处理后续触发。

但是,当再次执行该函数时,仍然会在一次调用中对a进行更改,因此如果它依赖于a的值,则可能会遇到问题 - 它归结为这个函数究竟是用变量做的。