Node.js 和 Underscore.js

标签 node.js underscore.js

我刚刚开始使用 Node.js,我知道大多数操作必须使用回调才能实现非阻塞。我的问题与 Underscore.js 公开的方法有关。例如

_.shuffle([1, 2, 3, 4, 5, 6]);

如果没有提供回调,这是否会被视为同步代码?考虑一个大列表来洗牌。

尝试掌握哪些库可以与 Node 一起使用,而不影响使用 Node 的基础知识。

谢谢!

最佳答案

Node 是单线程的,因此需要完成的任何工作最终都将由该线程完成。 Node 的异步特性意味着它总是试图让自己忙于工作,而不是等待数据返回(例如数据库调用、网络调用、磁盘访问等)。当您阅读有关确保代码异步的内容时,这些就是人们正在谈论的操作类型。

对一堆数字进行洗牌是必须由单个 Node 线程完成的大量工作,因此这种类型的调用async不会执行任何操作。所以,是的,该调用是同步的,并且会阻塞线程,但确实没有替代方案(无需生成工作线程或其他 Node 进程)。如果您需要进行大量繁重的计算,这就是 Node 实际上不是最佳选择的原因之一,因为它会阻塞单个线程。 Node 最擅长快速执行大量短期任务。

请注意,打乱一百万个数字可能仍然比单个数据库调用更快,因此此特定操作不会对整体性能产生太大影响。如果您需要洗牌 1 亿个数字,Node 可能不是合适的平台。

关于Node.js 和 Underscore.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24256789/

相关文章:

java - 使用 java 运行 nodejs

node.js - Node js/express/oboe.js 和 pug : Get node() events to update the dom

node.js - 如何在 Node js 中使用 Socket.io-client 连接两个 Socket.io Node 应用程序

angularjs - 穆尔特 - 错误 : Unexpected field

javascript - 从 json 数组中提取特定的键

javascript - jQuery 通过 ID 引用外部模板脚本

javascript - 主干模板方法。为什么我们要传入一个模型?

Javascript xmlhttp 获取对 nodejs 服务器的请求不返回任何内容

javascript - 强调 throttle +确保最后一次通话

javascript - 无法在 Backbone 中绑定(bind)点击事件