Javascript 设置图像src属性后是否可以立即触发onload事件?

Javascript 设置图像src属性后是否可以立即触发onload事件?,javascript,Javascript,执行此代码后,控制台日志可以是什么 var img = new Image; img.onload = function() { console.log('B'); }; img.src = 'image.jpg'; for (var i=0;i<100000;i++) { console.log('A'); } var img=新图像; img.onload=function(){console.log('B');}; img.src='image.jpg'; 对于(var i=0

执行此代码后,控制台日志可以是什么

var img = new Image;
img.onload = function() { console.log('B'); };
img.src = 'image.jpg';
for (var i=0;i<100000;i++) {
  console.log('A');
}
var img=新图像;
img.onload=function(){console.log('B');};
img.src='image.jpg';

对于(var i=0;i它可以是其中的任何一个。您不知道加载映像需要多长时间。映像甚至可以缓存,从而最大限度地减少加载时间。

还值得注意的是,使用
load
事件是出了名的不可靠。请参阅“注意事项”但是由于javascript是单线程的,所以当我们在循环中时,任何其他代码都不能执行,所以onload事件不能被调用,因为线程很忙。是吗?@Andrey实际上,看起来你是对的!我在JSFiddle中的所有测试似乎都指向
main()
函数必须在触发任何异步事件之前完成执行。有趣的是-我一直认为事件是在另一个线程中执行的。
BA…A
仍然不清楚。我还没有设法在浏览器中获得它,但也找不到证据证明它不可能…@Andrey M:要获得AAABA,for循环也应该是be以异步方式运行,因此可能是通过SetTimeout启动的函数,并且下一个循环迭代也将在该函数中通过SetTimeout调用(递归SetTimeout链不等同于for循环)。然后将从异步堆栈中获取所有coude。按照当前写入方式,加载事件可能会在for循环中终止,但console.log('B')将一直等到结束。