我正在使用Angular 8开发Web应用程序。我只想通过将获取的数据分配给全局变量来访问getData方法之外的输入图像的exif数据。如果我在执行函数后尝试访问全局变量,则显示未定义。 这是提取exif数据的功能:
photodata: any; // global variable
getPhotodata(file) {
EXIF.getData(file, function() {
const data = EXIF.getAllTags(this);
console.log(data); // working
console.log(data.Make); // working
console.log(data.Model); // working
console.log(data.DateTimeOriginal); // working
this.photodata = data;
console.log(this.photodata) // working
});
}
console.log(this.photodata) // here it is showing undefined
我试图返回数据。但这也不起作用
getPhotodata(file) {
EXIF.getData(file, function() {
const data = EXIF.getAllTags(this);
console.log(data); // working
console.log(data.Make); // working
console.log(data.Model); // working
console.log(data.DateTimeOriginal); // working
return data;
});
}
console.log(getPhotodata(file)) // undefined
答案 0 :(得分:1)
我知道您现在可能已经解决了这个问题,但是如果异步编程引起您的好奇,您可能会喜欢我的库exifr。我写这封信是因为exif-js现在实际上已经死了(没有保存2年以上),它的效率很低。 Exifr是基于Promise和async / await语法构建的,因此您可以执行以下操作:
async function getExif() {
let output = await exifr.parse(file)
console.log(data.Make)
console.log(data.Model)
}
您还可以尝试使用库中的playground并尝试图像及其输出,或查看repository and docs。