【发布时间】:2018-10-12 02:47:43
【问题描述】:
我有两个数组。我想使用 async.foreach 迭代数组。 但是当我这样做时,只有第二个数组被执行。如何执行两者。 以下是我的代码:
var _sizesArray1 = [_2000px, _1400px]
var _sizesArray2 = [_800px, _400px, _200px, _100px]
async.forEachOf(_sizesArray1, function(value, key, callback) {
async.waterfall([
function download(next){
//code
},
function convert(response, next) {
//code
},
function process(response, next) {
gm(response).command('convert')
.resize(_sizesArray[key].width,_sizesArray[key].width)
.gravity('Center')
.extent(_sizesArray[key].width,_sizesArray[key].width)
.quality('20')
.toBuffer(
'JPG', function(err,
buffer) {
if (err) {
next(err);
} else {
console.timeEnd(
"processImage array1"
);
next(null,
buffer,
key);
}
});
}
});
async.forEachOf(_sizesArray2, function(value, key, callback) {
async.waterfall([
function download1(next){
//code
},
function convert2(response, next) {
//code
},
function process3(response, next) {
//code
}
});
在我的代码中,只有 array2 被调用。为什么不执行第一个。 我的代码中是否有任何错误。有人可以帮忙解决这个问题吗?
【问题讨论】:
-
你是在两个循环中都使用 _sizesArray2 还是复制错误?
-
我在这里错误地更新了代码,我正在使用 _sizesArray1 & _sizesArray2。
-
通过更改两个数组中的函数名称,我确实在一定程度上实现了这一点。但是应用程序有时会处理两个数组中的所有维度,但有时它只是随机选择几个维度。这是由于缓冲区限制。遍历第一个数组后如何清理缓冲区。