EXIF-JS数据在方法外变得不确定

时间:2019-10-20 18:09:14

标签: javascript angular typescript exif-js

我正在使用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

1 个答案:

答案 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