JS异步调用 - 我的回调方法无法检查图像尺寸

时间:2015-06-10 15:13:55

标签: javascript asynchronous

我在这里有一个名为checkURL的布尔函数,用于检查图片是否有100 x 100像素。如果是这样,它返回true。函数中有一个异步调用来检查图像的大小。

function checkURL(url, callback) {

    var valid;
    var img = new Image();
    img.src = url;

    img.onload = function (callback) {

        valid = callback(img.width, img.height);

    };
    console.log(valid);
    return valid;
}


function nextStep(w, h) {
    if (w == 100 && h == 100) {
        return true;
    } else {
        return false;
    }
}

var pic_valid = checkURL(a_url, nextStep);

我收到错误:

  

未定义回调

在checkURL函数中。我也担心checkURL中有效的变量最终会失效。

ADDITIONAL EDIT:如果我添加console.log(有效);在返回有效之前我得到了未定义。这是预期的吗?

2 个答案:

答案 0 :(得分:1)

您可以在此处定义回调:

function checkURL(url, callback) {

然后你在这里重新定义它:

img.onload = function(callback){

...它掩盖了你实际赋值的变量。

不要掩饰它:

img.onload = function(){

答案 1 :(得分:0)

只需更改此行:

 img.onload = function(){

到此:

callback

因为您在新范围内创建了新的#myDiv { position: absolute; z-index: 10; } ,并且您不需要它。