我正在尝试检测我有以下网址的图片的宽度:
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
在加载图片之前我需要宽度,以便我可以修改它的容器。我觉得这里有一个明显的解决方案,但我无法弄明白。谢谢!
答案 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!
});