如何从此函数调用返回值?

时间:2017-02-25 20:07:36

标签: javascript jquery css dom

我有一个获取图像尺寸的功能。我从createObjectURL发送回信。

它在获取尺寸方面效果很好,但我无法获得这些值。我试图获得两个值,但问题似乎是函数内有一个函数。外部函数不知道内部函数中设置的值。当我对一个值进行硬编码时,就像在下面的“qq”中一样。所以我可以看到问题不在回报中,而在价值中。

在这种情况下,您如何阅读这些值?

imgSrc = window.URL.createObjectURL(this.files[0]);

var imgSize = getImgSize(imgSrc);
var newWidth = imgSize.retWidth;
var newHeight = imgSize.retHeight;

alert(newWidth);
alert(newHeight);

function getImgSize(imgSrc) {
  var newImg = new Image();

  newImg.onload = function() {
    var nHeight = newImg.height;
    var nWidth = newImg.width;

    //alert('The image size is ' + width + '*' + height);
  }

  newImg.src = imgSrc; //this must be done AFTER setting onload

  return {
    retWidth: nWidth,
    retHeight: 'qq'
  };
}

1 个答案:

答案 0 :(得分:3)

你无法取回它们,因为#import "MTLModel.h"是异步的,处理此问题的最简单方法是从加载程序内部调用函数。

.onload

这里我为流程的每个步骤使用一个函数。你有getImage开始这个过程。然后你调用一个实用程序函数,它将一个图像源和一个回调函数作为参数(你可以直接调用useImgSize函数,但是回调允许你使用效用函数来处理多个事情)。最后,您可以对useImgSize函数中的维度执行任何操作。