我在javascript中有一个名为AddElementToDom()的函数,它在数组上运行循环并向Dom添加元素(其中很多都需要很长时间)。该函数是从不同的事件中调用的。我想确保在启动另一个AddElementToDom之前,对此函数的每次调用都在等待上一次调用以完成该函数。我的想法是在c#中执行lock()。但我在javascript中找不到一个。实现锁定的最佳方法是什么?
答案 0 :(得分:2)
Javascript是单线程的,因此您没有并发问题。因此,没有锁。锁用于解决并发问题。
你可能仍然想要逻辑,说“在操作栏完成之前,操作Foo不应该运行”。像:
var operationBarIsCompleted = false;
function foo() {
if(!operationBarIsCompleted) {
return;
}
// ...
}
function bar() {
// ...
operationBarIsCompleted = true;
}
但现在我只是为你编写编程逻辑。
但是,如果这是事件驱动的,那么您需要学习使用异步代码和回调。我无法通过SO答案来教导这一点; plenty of resources on Google和StackOverflow。