我在 javascript 中有一个名为 AddElementToDom() 的函数,它在数组上运行一个循环并将元素添加到 Dom (其中很多,这需要很长时间)。该函数正在从不同的事件中调用。我想确保在启动另一个 AddElementToDom 之前,每次调用此函数都在等待上一次调用以完成该函数。我的想法是在 c# 中做 lock() 。但我在javascript中找不到。实现锁的最佳方法是什么?
问问题
3191 次
1 回答
0
Javascript 是单线程的,因此您不会遇到并发问题。因此,没有锁。锁旨在解决并发问题。
不过,您可能仍然需要逻辑,说“操作 Foo 不应该在操作 Bar 完成之前运行”。喜欢:
var operationBarIsCompleted = false;
function foo() {
if(!operationBarIsCompleted) {
return;
}
// ...
}
function bar() {
// ...
operationBarIsCompleted = true;
}
但现在我只是为你编写编程逻辑。
但是,如果这是事件驱动的,那么您需要学习使用异步代码和回调。我不能通过一个 SO 答案来教这个;Google和StackOverflow上的大量资源。
于 2013-10-06T23:57:45.190 回答