Javascript:异步加载事件的同步返回值?
鉴于以下功能:Javascript:异步加载事件的同步返回值?,javascript,javascript-events,Javascript,Javascript Events,鉴于以下功能: function check_min_sizing (input, options) { reader = new FileReader(); reader.onload = function (e) { img_rsc = e.target.result; image = new Image(); image.onload = function () { if (image.width < options.min_width |
function check_min_sizing (input, options) {
reader = new FileReader();
reader.onload = function (e) {
img_rsc = e.target.result;
image = new Image();
image.onload = function () {
if (image.width < options.min_width || image.height < options.min_height) {
return false;
} else {
return true;
}
};
image.src = img_rsc;
};
reader.readAsDataURL(input.files[0]);
}
有一些方法可以实现这一点,在图像加载之前阻塞函数,但这是一件坏事。调用代码应该传入一个回调函数,如果您想要错误回调,那么应该传入两个回调函数
check_min_sizing(input, options, function(e){
// do something successful
}, function(error){
// throw an error
});
在异步模型中,AMAIK无法等待回调,我认为您的请求(架构)基本上是错误的。基于
true
或false
结果,您希望执行的任何操作都应该发生在回调函数中 糟糕?这是彻头彻尾的邪恶。永远不要去想。。。曾经(哦,顺便说一句,被接受的答案将是这个答案的一个变体so+1)。所以。。。那么,非邪恶的做法是使用回调函数吗?是的,回调很简单。如果你想变得有趣,可以研究一下javascript中的“承诺”。
check_min_sizing(input, options, function(e){
// do something successful
}, function(error){
// throw an error
});