如何lock
在JavaScript中实现与C#等效的功能?
因此,解释一下我在想一个简单的用例是:
用户单击按钮B
。B
引发一个onclick事件。如果B
是在event-state
事件等待B
是在ready-state
传播之前。如果B
in ready-state
中的B
被锁定并设置为event-state
,则事件传播。事件的传播完成后,B
设置为ready-state
。
我可以看到仅通过ready-state
在按钮中添加和删除类,就能完成与此类似的事情。但是,问题在于用户连续单击按钮的时间比设置变量的速度快两次,因此在某些情况下,这种锁定尝试将失败。
有谁知道如何实现在JavaScript中不会失败的锁?
锁在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] 删除。
我来说两句