0

我有以下代码正在运行

var exif = function(exifObject) {
    alert(exifObject.Orientation);
}

$(this).fileExif(exif);

问题是,我需要行后的警报值$(this).fileExif(exif)

所以我尝试执行以下操作:

function getOrientation(exifObject){
    return(exifObject.Orientation);
}
getOrientation($(this).fileExif());

这没用。我怎样才能$(this).fileExif(exif)在行后获得警报值?

附加信息

console.log(exifObject)返回具有属性数组 fe 的 Object Orientation

$(this)包含在此代码中:

$('body').on('change', '#imgFile', function(event) {

所以它是一个输入类型的文件。

4

2 回答 2

0

您正在将exif(这是一个函数)传递给该fileExif函数。这是一个例子,说明函数是 JavaScript 中的一等对象,在这种情况下exif是一个“回调”函数。也就是说,当fileExif函数完成时,它将结果传递给exif函数,然后调用该函数。

在执行方面,alert将在fileExif函数之后调用。但是,如果您非常希望在函数之后编写代码,则可以在传递函数时声明该函数:

$(this).fileExif(function(exifObject) {
    alert(exifObject.Orientation);
});

但是,这可能不像原来的那么清楚。

于 2013-03-31T09:33:53.983 回答
0

我发现只有一个用于 jQuery 的 fileExif 插件。这里它来源。该插件使用本机FileReader。FileReader 异步加载文件。你有两种方式。首先 - 修改插件代码并使其同步(坏主意)。使用 asycn 样式编写代码(最佳实践)。

于 2013-03-31T09:40:10.343 回答