javascript - Node.js Array.map() 是异步的吗?

标签 javascript node.js asynchronous callback mapping

我可以指望每次调用 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/

相关文章:

mysql创建表id自增报错

node.js - Mongoose 等待保存

c# - 对于 C# 和 .NET,为什么运行时不自动异步运行?

javascript - magento 中的顶部菜单栏问题

javascript - 将输入值传递给空 div

python - Nodejs服务器,使用Ajax在html客户端中从Python获取JSON数据

angularjs - 不确定如何使用 meanjs 限制路由

android - 从 android 应用程序调用异步 Firebase 函数时出现 “INTERNAL” 异常

javascript - 带有图标字体的 Bootstrap 按钮重复 JavaScript 事件问题

javascript - 如何优化网站加载速度?