Node.js和Underscore.js

pat*_*r82 0 node.js underscore.js

我刚刚开始使用Node.js,我知道大多数操作必须使用回调来进行非阻塞.我的问题涉及Underscore.js公开的方法.例如

_.shuffle([1, 2, 3, 4, 5, 6]);
Run Code Online (Sandbox Code Playgroud)

鉴于没有提供回调,这不会被视为同步代码吗?考虑一个大的列表来洗牌.

试图掌握哪些库可以与节点一起使用而不影响使用节点的基本原理.

谢谢!

Bil*_*ill 6

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

拖拽一堆数字是一堆必须由单个Node线程完成的工作,这使得这种类型的调用async不会做任何事情.所以,是的,该调用是同步的并且将阻塞线程,但实际上没有替代方案(没有产生工作线程或其他节点进程).如果你有很多繁重的计算要做,这就是Node真的不是最好的选择的原因之一,因为它会阻塞单个线程.Node最擅长快速完成大量短期任务.

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