我写了下面这个函数。我需要读取图像的尺寸,然后将其缩小。在初始回调后,我想使用我计算的width
和height
值来调整大小并保存图像。我的变量超出了范围,我得到ReferenceError: width is not defined
。如何正确确定这些变量的范围,以便它们可用于resize
函数?
function saveImage(image) {
return new Promise((resolve, reject) => {
gm(image.data).size(function(error, value) {
if (value.width > image.maxSize || value.height > image.maxSize) {
max = Math.max(value.width, value.height);
if (value.width == max) {
width = image.maxSize; height = null;
} else {
height = image.maxSize; width = null;
}
} else {
width = value.width; height = value.height;
}
})
.resize(width, height)
.write('./tmp/test.jpg', function(error, value) {
if (!error) console.log(error);
});;
});
}
答案 0 :(得分:1)
你应该正确定义你的变量...我更喜欢你应该学习es6语法并使用“let”和“const”作为变量,并且范围广泛,谢谢: - @ ravi
答案 1 :(得分:0)
在承诺中使用箭头功能,但在下面的.size()
行中,您使用旧式匿名函数,然后您将失去范围。您可以尝试使用.size()
.size((error, value) => {})