我可以指望每次调用 doSomething() 时都完成 nodeIDs 映射吗?
nodeIDs = $.map(nodeIDs, function(n){
return n.match(/\d+$/);
});
doSomething(nodeIDs);
我认为 node.js 中的所有回调都是异步的?我确实读过一篇关于一般编程的文章,回调可能是同步的,但我不确定 node.js?
最佳答案
JavaScript 也是一种函数式编程语言。你这里有一个“高阶函数”,一个将函数作为参数的函数。高阶函数是同步的(但请参见下面的注释)。
来源:
map()
是高阶函数的典型例子。它接受一个函数并将其应用于数组的所有元素。这个定义听起来很“实用”。 Node 也不提供此功能。由 MDN Array.prototype.map() 记录并由 ECMAScript 5.1 指定.
回答您的问题:是的,doSomething(nodeIDs)
在所有元素都已应用后被调用。
注意:高阶函数是函数式编程的一个概念。 JavaScript 是功能性的,但也深深 Root 于在浏览器或服务器上执行代码的实用性。我会说,例如
setTimeout()
不是一个高阶函数,即使它需要一个函数作为参数,因为 setTimeout()
并不是真正纯粹的函数,因为它使用时间。纯粹的功能是永恒的。例如 map()
的结果不依赖于时间。这就是这个问题的真正意义所在。如果某些事情不依赖于时间,您可以同步执行它。问题解决了。
感谢 Simon 挑战 JavaScript 中高阶函数的定义。
关于javascript - Node.js Array.map() 是异步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763613/