异步each与forEach js之间的区别

11

有人能为我解释一下这两者之间的区别吗:

async.each(items, function (item, callback) {
    // Do something
});

或者:

items.forEach(function(item) {
 // Do something
)};

3
同步与异步(非同步)的区别在于是否进行协调和等待。同步指操作需要按照特定顺序进行,每个操作都要等待前面的操作完成后才能开始执行,这种协调能确保数据的一致性和正确性。而异步不需要等待前一个操作完成就可以开始下一个操作,这样可以提高效率,但可能会导致数据不一致或错误。在Java中,synchronized关键字被用来实现同步,而没有synchronized关键字的代码则是异步的。 - Roy Shmuli
3
第一个方法会在.each()循环运行时继续执行任何脚本,而第二个方法则会在完成循环之前执行所有后续脚本。 - Reinstate Monica Cellio
请查看此答案ECMA规范中的forEach - Jakub Synowiec
1个回答

14

async.each

async.each 是一个非阻塞的(异步的)方法,这意味着它在运行时您的脚本也在继续执行。同时它也是并行的,这意味着多个项目在同一时间进行处理。这是由外部库提供的一个方法,我猜测这个库可能是 async。它不是原生的 JavaScript 特性,也没有添加到 Array.prototype,因此您不能编写 myArray.each

Array.forEach

Array.forEach 是一个阻塞的(同步的)函数,这意味着您的脚本将等待它完成后才会继续执行。它以串行的方式运行,这意味着每个项都在前一个项被处理后处理。 forEach 是 JavaScript 的原生函数 (规范) 并定义在 Array.proptotype 上,因此您可以简单地编写 myArray.forEach 而不必编写 Array.forEach(myArray)。例如,如果您在 forEach 循环中推入一个数组,则可以在 forEach 调用之后的行中访问被推入的值。


1
值得注意的是,async.each 是并行执行的。如果需要,可以使用 async.eachSeries - Robbie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接