如何用 JavaScript 实现 C# 中相当于 lock
的东西?
因此,为了解释我的想法,一个简单的用例是:
用户点击按钮 B
。 B
引发 onclick 事件。 If B
is in event-state
the event waits for B
to be in ready-state
before propagating. If B
is in ready-state
, B
is locked and is set to event-state
, then the event propagates.事件传播完成后, B
设置为 ready-state
。
我可以看到如何完成类似的操作,只需从按钮中添加和删除类 ready-state
即可。然而,问题在于用户连续两次单击按钮的速度快于设置变量的速度,因此这种锁定尝试在某些情况下会失败。
有谁知道如何在 JavaScript 中实现不会失败的锁?
原文由 smartcaveman 发布,翻译遵循 CC BY-SA 4.0 许可协议
Lock 在 JS 中是一个值得怀疑的想法,它旨在实现无线程且不需要并发保护。您希望结合延迟执行的调用。我为此遵循的模式是使用回调。是这样的:
您还可以使用 DOM 事件侦听器或 pubsub 解决方案来实现它。