javascript - 同步返回异步onload事件的值?

标签 javascript dom-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 || image.height < options.min_height) {
        return false;
      } else {
        return true;
      }
    };
    image.src = img_rsc;
  };
  reader.readAsDataURL(input.files[0]);
}

如何让整个函数返回 truefalse?它不能像上面那样工作,因为(我相信)该函数在 onload 执行之前完成执行...

我希望能够做这样的事情:

if (check_min_sizing(input, options)) {
  // do something successful
} else {
  // throw an error
}

最佳答案

有一些方法可以使这个工作正常进行,方法是在图像加载之前阻止该功能,但这是一件坏事。调用代码应该传入一个回调函数,或者如果你想要一个错误回调函数则传入两个。

check_min_sizing(input, options, function(e){
  // do something successful
}, function(error){
  // throw an error
});

关于javascript - 同步返回异步onload事件的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6606048/

相关文章:

javascript - Image.onload 不适用于 .jpg 图像更改为 .png

javascript - 在 RethinkDB eqJoin() 上使用 Pluck/Without

javascript - 函数 "setSeconds( )"不适用于 p5.js Web 编辑器

javascript - AngularJS - 连接到 App.js 中的另一个 Controller

javascript - 如何使用 jquery 验证器创建自定义事件

javascript - 添加子标签时如何制作div覆盖

javascript - 停止页面卸载/关闭

javascript - iframe 中尾部外部文本文件

javascript - Amazon S3 POST,事件何时完成?

javascript - DOMNodeInserted 和 DOMNodeInsertedIntoDocument 有什么区别?