是否保证函数返回的新Image的onload事件在返回后会被执行?

问题描述 投票:0回答:1

考虑这个最小的可重现示例:

let src = 'https://fetch-progress.anthum.com/120kbps/images/sunrise-baseline.jpg';

let example = null;

function test(inSrc) {
  let image = new Image();

  image.onload = function () {
    if (example.src === src) {
      example = null;
    }
  }

  image.src = inSrc;

  return image;
}

example = test(src);

是否保证在将新图像对象分配给“example”后执行onload事件,因此,无论源大小如何,加载图像后,example将再次为空?或者onload可以在返回之前执行吗?

显然在我的所有测试中它总是在返回后运行,但我想确定它是否是 100% 保证的。我希望有一份解释其工作原理的参考资料。谢谢!

javascript onload
1个回答
0
投票

是的,这是保证的。浏览器触发的事件始终是异步的。 JavaScript 代码具有运行到完成的语义,在完成之前不会被中断。另请参阅这个答案了解更多详细信息(在nodejs中也是如此)。

© www.soinside.com 2019 - 2024. All rights reserved.