【发布时间】:2015-08-24 14:10:13
【问题描述】:
我这里有一个函数可以检查图片的尺寸是否为 100 x 100 像素,如果是则返回 true
function checkDims(url) {
var valid = $("<img/>").attr("src", url).load(function() {
s = { w: this.width, h: this.height };
if (s.w == 100 && s.h == 100) {
return true;
}
else {
return false;
}
});
return valid;
}
我想设置一个名为 valid 的变量,该变量使用 .load function to get the image size of a remote URL 进行检查,我希望它相应地返回 true 或 false。我知道我将它设置为一个 jQuery 对象,但我想从内部函数中获取结果。
我试过了:
function checkDims(url) {
var valid;
$("<img/>").attr("src", url).load(function() {
s = { w: this.width, h: this.height };
if (s.w == 100 && s.h == 100) {
valid = true;
}
else {
valid = false;
}
});
return valid;
}
但是当我调用 checkDims 函数时,它给了我 undefined 作为有效值
所以如果我打电话给
var s = checkDims(a_url)
。它会返回
未定义
【问题讨论】:
-
load 是异步调用,不能从异步调用返回。到设置真假的时候,函数已经退出了。
-
我将如何解决这个问题。如果可能的话?我需要一个 setInterval 函数来等待吗?
-
您需要更改逻辑,以便回调触发流程的下一步。
-
我明白了。好的,谢谢
-
@epascarello 那么为什么如果我在调用中放置一个 console.log 它会打印呢?
标签: jquery