【发布时间】:2016-06-20 18:24:57
【问题描述】:
想象以下代码,在节点上运行并使用 lodash:
var result = [];
_.each(someArray, function (elem) { ... result.push(newElem); });
_.each(anotherArray, function (elem) { ... result.push(newElem); });
superfunction(result);
在某些情况下,superfunction 是否可能在 each() 完成之前运行,这意味着 superfunction 将获得一半填充的 result 数组?
【问题讨论】:
-
是的,当然。 result.push() 可能在异步方法的回调中,在这种情况下,超级函数将在任何 .push() 调用发生之前运行。
-
好的,但是,如果在 eachs 调用的那些函数上完全同步代码 - 例如,只是一些数学计算 - 是否可以在循环完成之前调用超级函数?
-
没有。如果它是同步的,那么它永远不会离开当前的调用堆栈,因此超级函数在每个完成之前都无法运行。
-
这是出于所有实际目的,询问代码
x(); y();中是否可以在x完成之前运行y。不。JS 是一种命令式/顺序编程语言,一次按顺序执行一条语句。
标签: node.js asynchronous lodash