Node.js Array.map()是异步的吗?
我能指望每次调用doSomething()时完成的nodeID映射吗?
nodeIDs = $.map(nodeIDs, function(n){ return n.match(/\d+$/);
});
doSomething(nodeIDs);
我以为node.js中的所有回调都是异步的?我确实读过一篇关于通用编程的文章,说回调可以是同步的,但是我不确定node.js吗?
回答:
JavaScript也是一种功能编程语言。您在这里拥有的是“高阶函数”,该函数将函数作为参数。高阶函数是同步的(但请参见下面的注释)。
资料来源:
- 功能编程
- JavaScript中的高阶函数
map()
是高阶函数的典型示例。它接受一个函数并将其应用于数组的所有元素。这个定义听起来很“实用”。Node也未提供此功能。它由MDN
Array.prototype.map()记录,并由ECMAScript
5.1指定。
要回答您的问题:是,在应用所有元素 *
高阶函数是功能编程的概念。JavaScript是功能性的,但在浏览器内部或服务器上执行代码的实用性方面也深深扎根。我要说的是,setTimeout()
即使它以函数作为参数,setTimeout()
也不是一个高阶函数,因为它不是真正的纯函数,因为它使用时间。纯功能是永恒的。例如,的结果map()
不依赖于时间。这就是这个问题的实质所在。如果某些事情不依赖于时间,则可以同步执行它。问题解决了。
感谢Simon挑战JavaScript中高阶函数的定义。
以上是 Node.js Array.map()是异步的吗? 的全部内容, 来源链接: utcz.com/qa/427746.html