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
});