2

我在 javascript 中有一个名为 AddElementToDom() 的函数,它在数组上运行一个循环并将元素添加到 Dom (其中很多,这需要很长时间)。该函数正在从不同的事件中调用。我想确保在启动另一个 AddElementToDom 之前,每次调用此函数都在等待上一次调用以完成该函数。我的想法是在 c# 中做 lock() 。但我在javascript中找不到。实现锁的最佳方法是什么?

4

1 回答 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 回答