【发布时间】:2020-10-27 05:54:52
【问题描述】:
我有一个用于检查多个上传图像的纵横比的 for 循环,在完成循环后,我想检查 if else 条件中的比率以重定向用户。问题是在循环完成之前检查条件,我需要在检查条件之前完成循环。我发现异步虽然可能适合这里,但我对实现的最佳方法感到困惑,谁能给我解决方法来按顺序执行代码。
//check image ratio
var validImageRatio = true;
for(i=0; i<req.files.propertyPhoto.length; i++){
var tempFile = req.files.propertyPhoto[i].tempFilePath.replace(/\\/g, '/');
var ratio;var width;var height;
var acceptedRatio = 3;
//get image ratio
sizeOf(tempFile, function (err, dimensions) {
width = dimensions.width;
height = dimensions.height;
ratio = width/height;
});
if (ratio < (acceptedRatio - 0.1) || ratio > (acceptedRatio + 0.1)) {
validImageRatio = false;
break;
}
}
//if ratio invalid, redirect
if (!validImageRatio) {
...
}
//if ratio valid, upload
else{
...
}
【问题讨论】:
-
sizeOf函数异步运行,因此节点在设置width/height/ratio值之前继续运行。