函数不在jQuery中返回变量

时间:2014-02-06 21:54:01

标签: javascript jquery image

我正在尝试检测我有以下网址的图片的宽度:

var getWidth = function( url ){
    var i = new Image;
    i.onload = function(){
        var width = (this.width);
        alert( width );  // width defined here
        return width;
     }
     i.src = url;
}
var theWidth = getWidth( url ); 
alert( theWidth );  // undefined here

在加载图片之前我需要宽度,以便我可以修改它的容器。我觉得这里有一个明显的解决方案,但我无法弄明白。谢谢!

1 个答案:

答案 0 :(得分:2)

您无法从异步回调中返回。想一想。这看起来不是很奇怪吗?

function foo () {
    setTimeout(function(){
        return "Hello World!";
    },2000)
}
alert(foo()); // undefined

该函数将返回undefined,因为它在超时之前完成。要解决此问题,请让函数接受使用所需值执行的回调。

function foo(callback) {
    setTimeout(function(){
        callback("Hello World!");
    },2000)
}
foo(function(msg){
    alert(msg); // Hello World!
});