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
将在每个文件上调用。该过程将并行进行。所以执行的顺序是不能保证的。这里将通过 saveFile
对 openFiles
数组进行一些操作。如果任何元素导致 saveFile 中的错误,该函数将调用错误的邮件回调并停止该过程。
异步每个
.every(coll, iteratee, callback)
这似乎是相同的方法。因为它还在 coll
元素上执行 iteratee
方法。但这里的关键是,它将返回 true
或 false
。它更像是一个过滤器,但唯一的区别是如果 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/