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