javascript - async.each 与 async.every 之间的区别?

标签 javascript node.js express async.js

async.js 中 async.each 与 async.every 的区别? 似乎两者都相同,只是 async.every 返回结果。 纠正我,我错了。

最佳答案

每个异步

.each(coll, iteratee, callback)

它更像是数组 each 方法。在每个 Iterable ( coll ) 元素上,函数 iteratee 将被执行。这将并行进行。所以以网站为例

async.each(openFiles, saveFile, function(err){
  // if any of the saves produced an error, err would equal that error
});

这里假设 openFiles 是文件路径数组。因此 saveFile 将在每个文件上调用。该过程将并行进行。所以执行的顺序是不能保证的。这里将通过 saveFileopenFiles 数组进行一些操作。如果任何元素导致 saveFile 中的错误,该函数将调用错误的邮件回调并停止该过程。

异步每个

.every(coll, iteratee, callback)

这似乎是相同的方法。因为它还在 coll 元素上执行 iteratee 方法。但这里的关键是,它将返回 truefalse。它更像是一个过滤器,但唯一的区别是如果 coll 中的任何元素在 iteratee 方法中失败,它会返回 false。不要将此处与错误混淆。如果在执行过程中发生一些不确定的行为,就会导致错误。所以方法中的callback会返回callback(err, result)。结果是真还是假取决于 coll 是否通过了迭代测试。

例如检查数组是否有偶数;

async.every([4,2,8,16,19,20,44], function(number, callback) {
      if(number%2 == 0){
         callback(null, true);
      }else{
        callback(null, false);
      }
}, function(err, result) {
    // if result is true when all numbers are even else false
});

所以它更像是在可迭代实体中测试一组值。如果他们通过了给定的测试。另一个示例可能是检查给定数字是否为质数。

关于javascript - async.each 与 async.every 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44779043/

相关文章:

javascript - 函数返回未定义,而日志显示结果

javascript - 如何更改对象的键以匹配传递给函数的参数?

javascript - 在服务器端将隐藏值数据作为数组发送时出现错误

node.js - 使用 Express 和 Ember.js 的 Github OAuth 流程

windows - 在 Windows Server 2008 上安装 javascript 驱动程序 Mongodb-native

node.js - iisnode 的权限和请求

javascript - node.js 和浏览器中的 jade 模板助手

javascript - CKEditor 上传回调

javascript - 如何使请求中的授权 header 过期?

javascript - 字体在适用于 iOS 的 Cordova App 上随机加载