javascript - 如何从 foo.onload = function(){ 获得响应?

标签 javascript jquery

我有一个使用 .onload 触发的函数。我想返回一个值:

newImg.onload = function() {
    var height = newImg.height;
    var width = newImg.width;
    if(height > width){
        console.log(false);
        return false;
    } else {
        console.log(true);
        return true;
    }
 }
 newImg.src = imgSrc; // this must be done AFTER setting onload

通常我会做类似的事情

var foo = function(){...

但这在这种情况下不起作用。我应该怎么做?

最佳答案

异步调用不能返回值。您需要像在 Ajax 请求中那样使用回调。

function loadImg (imgSrc, callback) {
    var newImg = new Image();
    newImg.onload = function() {
        var height = newImg.height;
        var width = newImg.width;
        if(height > width){
            console.log(false)
            if(callback) callback(false);
        } else {
            console.log(true)
            if(callback) callback(true);
        }
     };
     newImg.onerror = function () {
         if(callback) callback('error');
     };
     newImg.src = imgSrc;

}

loadImg("foo.gif", function(status) { console.log("Do Next Step"); })

关于javascript - 如何从 foo.onload = function(){ 获得响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16587236/

相关文章:

javascript - 使用 Google Maps JavaScript API V3 查找行车路线

jQuery 更改多个 CSS 然后再更改回来

jquery - css3 过渡而不是 .animate()

javascript - 将字符串转换为有效的 JSON 对象

javascript - 同一个元素的多个点击事件?

javascript - 检测 facebook 用户是否在没有弹出窗口的情况下登录

javascript - 是否可以使构造函数属性分配列表变得更短?

javascript - jsTestDriver + Nant = 测试目录问题

javascript - 如何访问smarty变量并分配给jquery变量?

javascript - 如何在单页应用程序中切换照片?