我正在使用Angular 8开发一个web应用程序。我只想通过将获得的数据赋给全局变量来访问getData方法之外的输入图像的exif数据。如果我试图在执行function之后访问全局变量,它显示为undefined。下面是提取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发布于 2020-02-14 22:22:45
我知道你现在可能已经解决了这个问题,但是如果异步编程引起你的好奇心,你可能会喜欢我的库exifr。我之所以写它,是因为exif-js现在实际上已经死了(两年多没有维护过了),它相当低效。Exifr是围绕promises和async/await语法构建的,因此您可以这样做:
async function getExif() {
let output = await exifr.parse(file)
console.log(data.Make)
console.log(data.Model)
}您还可以试用该库的playground并尝试图像及其输出,或者查看repository and docs。
https://stackoverflow.com/questions/58475828
复制相似问题