我正在关注异步模块的每个方法(https://github.com/caolan/async#each)。它说该方法并行迭代数组。 “平行”这个词令我困惑。 AFAIK,现在JavaScript可以并行执行代码,因为它具有单线程模型。
每种方法中显示的示例都侧重于IO方案。我正在使用“each”方法来添加数组的数量。如果存在并行性,我可以使用我的例子证明这一点吗?
感谢阅读。
答案 0 :(得分:3)
异步文档中的“并行”在并发性方面并不是指“并行”(就像多个进程或线程同时运行一样),但每个步骤的“并行”独立于其他步骤(相反的操作是eachSeries
,其中每个步骤仅在前一步完成后运行。)
并行版本只有在步骤执行某种I / O时才有意义,因为Node(因为Node的异步性质)可以彼此并行运行:如果一步必须等待I / O,其他步骤可以愉快地继续发送/接收数据。
如果这些步骤主要是cpu绑定的(即执行大量计算),那么它不会为你提供更好的性能,因为就像你说的那样,Node在一个线程中运行解释器,而那不是async
更改。
答案 1 :(得分:1)