如何在JavaScript中实现锁定

smartcaveman:

如何lock在JavaScript中实现与C#等效的功能

因此,解释一下我在想一个简单的用例是:

用户单击按钮BB引发一个onclick事件。如果B是在event-state事件等待B是在ready-state传播之前。如果Bin ready-state中的B被锁定并设置为event-state,则事件传播。事件的传播完成后,B设置为ready-state

我可以看到仅通过ready-state在按钮中添加和删​​除类,就能完成与此类似的事情但是,问题在于用户连续单击按钮的时间比设置变量的速度快两次,因此在某些情况下,这种锁定尝试将失败。

有谁知道如何实现在JavaScript中不会失败的锁?

JoshRivers:

锁在JS中是一个值得怀疑的想法,它旨在成为无线程的并且不需要并发保护。您正在寻求合并延迟执行的调用。我遵循的模式是使用回调。像这样:

var functionLock = false;
var functionCallbacks = [];
var lockingFunction = function (callback) {
    if (functionLock) {
        functionCallbacks.push(callback);
    } else {
        $.longRunning(function(response) {
             while(functionCallbacks.length){
                 var thisCallback = functionCallbacks.pop();
                 thisCallback(response);
             }
        });
    }
}

您还可以使用DOM事件侦听器或pubsub解决方案来实现此目的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章