因此,我一直在研究JavaScript实际上是单线程的,即使它似乎是多线程的(或者至少我是这样理解的),我想知道以下功能是否可以保证在其他功能之前完成叫做。

我相当确定,但是对push()的调用使我担心,当调用它时,某些其他函数可能会首先执行。话虽这么说,我想不出会在push()中运行的任何长时间运行的代码。

// adds a new node to children, after checking if its UID is not in childrenAdded
this.addChild = function(newChild) {
    if (!_this._childrenAdded[newChild.uid]) {
        _this._childrenAdded[newChild.uid] = true;
        _this._children.push(newChild);
    }
}

最佳答案

所有Array方法(包括push)都是同步的。这几乎是JS中所有操作的默认设置,异步是一个例外,并记录在每个此类函数中。

09-05 10:53