Javascript 获取图像大小时绕过异步

Javascript 获取图像大小时绕过异步,javascript,jquery,Javascript,Jquery,我得到的图像大小宽度x高度。图像的位置是URL。我尝试了下面的代码块 var constants: { standImgDim: { small: '200x200', mid: '400x400' } }; 预期产出: 200x200 data 我知道结果是由于异步行为 我还试过使用$.Deferred。。但这行不通。因为我没有像下面那样使用ajax 递延风险值=新的递延美元 $.ajax({

我得到的图像大小宽度x高度。图像的位置是URL。我尝试了下面的代码块

var constants: {
       standImgDim: {
           small: '200x200',
           mid: '400x400'
       }
    };
预期产出:

200x200
data
我知道结果是由于异步行为

我还试过使用$.Deferred。。但这行不通。因为我没有像下面那样使用ajax

递延风险值=新的递延美元

 $.ajax({
                    type: "GET",
                    url: targetImg,
                    dataType: "image/jpeg"
                }).done(function(data) {
                    deferred.resolve(data);
                }).fail(function(error) {
                    deferred.reject(error);
                });

                return deferred.promise();

有什么方法可以同步/其他方式完成吗

在加载函数中添加回调:

this.getImgDim = function(targetImg, callback) {
        var width=0, height=0, setStyleWidth = 0;
        $("<img/>")
            .attr("src", targetImg)
            .load(function() {
                width = this.width;
                height = this.height;
                var gotDim = width+'x'+height;

                    console.log(gotDim);

                callback();
            });


    };

this.getImgDim('targetImage', function () {
       console.log('data');
});

不,不能绕过异步。向我们展示您如何尝试使用延迟。$。延迟与Ajax无关。如果它对您不起作用,说明您没有正确使用它。请为我们创建一个JSFIDLE,以便我们可以进一步帮助您
 $.ajax({
                    type: "GET",
                    url: targetImg,
                    dataType: "image/jpeg"
                }).done(function(data) {
                    deferred.resolve(data);
                }).fail(function(error) {
                    deferred.reject(error);
                });

                return deferred.promise();
this.getImgDim = function(targetImg, callback) {
        var width=0, height=0, setStyleWidth = 0;
        $("<img/>")
            .attr("src", targetImg)
            .load(function() {
                width = this.width;
                height = this.height;
                var gotDim = width+'x'+height;

                    console.log(gotDim);

                callback();
            });


    };

this.getImgDim('targetImage', function () {
       console.log('data');
});
callback.bind(this);