如果用户多次单击元素,如何避免竞争条件?我知道 Javascript 是一种单线程语言。会不会发生任何比赛条件?
如果是这样,我能想到的最好的办法就是在关键部分之前有一个标志。但是从一般的并发知识来看,如果 2 个线程一起进入第 3 行,仍然可能会发生竞争情况。
var isInProgress = false;
$('#target').click(function () {
if (isInProgress) {
console.log('In progress, skipping.');
return;
}
isInProgress = true;
// Critical section start
...
// Critical section end
isInProgress = false;
});