使用Javascript将函数数据设置为变量

使用Javascript将函数数据设置为变量,javascript,Javascript,我想将外部图像的宽度从另一个url设置为一个变量,这样我就可以在另一个函数上使用新分配的变量 问题是我在变量上得到了未定义的消息,请参见下面的代码 var site_url = 'http://fabricjs.com/assets/1.svg'; function getMeta(url, callback) { var img = new Image(); img.src = url; img.onload = function() { callback(this.

我想将外部图像的宽度从另一个url设置为一个变量,这样我就可以在另一个函数上使用新分配的变量

问题是我在变量上得到了未定义的消息,请参见下面的代码

var site_url = 'http://fabricjs.com/assets/1.svg';

function getMeta(url, callback) {
    var img = new Image();
    img.src = url;
    img.onload = function() { callback(this.width, this.height); }
}
var a = getMeta(site_url, function(width, height) { 
    return width; 
});

alert(a); //undefined

我做错了什么,应该如何继续?

使用异步函数时,需要将其余代码放入回调函数或使用承诺。在这里,您需要在回调中添加警报

var a = getMeta(site_url, function(width, height) { 
  alert(width);
});

我不想提醒它,我想使用变量“a”,它应该是一个带宽度的整数。好的,但我已经说过,你必须把剩下的代码放在回调函数中使用a的地方。当我打印“a”时,它仍然没有定义,有没有办法让这个变量只是一个数字?为什么我不能返回宽度?你能给我举个例子吗?没关系,复制品上说是impossible@Lindow. 不,你不明白。这并非不可能。您必须在回调函数的开头写一个=width,之后的所有内容都必须放在回调函数中。您不能从异步函数返回任何内容,因为它是在打印后调用的,明白吗?