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

标签 javascript asynchronous

我这里有一个名为 checkURL 的 bool 函数,用于检查图片是否具有 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);

我收到错误:

callback is not defined

在 checkURL 函数中。我还担心 checkURL 中有效的变量最终会变得无效。

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

最佳答案

您可以在此处定义回调:

function checkURL(url, callback) {

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

img.onload = function(callback){

...它掩盖了您实际为其赋值的变量。

不要掩盖它:

img.onload = function(){

关于javascript - JS 异步调用 - 我的回调方法无法检查图像尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30760465/

相关文章:

ios - 如何停止获取?

javascript - 确定两个元素之间的关系

c# - 使用 TPL 实现经典异步模式

mysql - NodeJs 将多个请求的 Json 存储到 MySQL DB

javascript - 如何在日期选择器中的 JQUERY 中设置从当前日期开始的 -3 年和从当前日期开始的 +9 个月

ruby-on-rails - 异步运行 Activerecord

javascript - 异步 js 函数和日志记录错误

javascript - 使用 jquery 问题将文本 append 到文本区域

javascript - 父 Controller 上的 $scope.$watch 不会触发子 ng-select

javascript - 从样式化组件宏重新导出样式化不起作用