Javascript 是否存在任何立即发生的DOM/Browser API事件或回调(中断当前流)

Javascript 是否存在任何立即发生的DOM/Browser API事件或回调(中断当前流),javascript,html,Javascript,Html,大多数JavaScript/HTML/DOM/Browser回调和事件都不是即时的或不可重入的(不确定这里的词是否正确)。我的意思是,即使某个事件进入,它也会被添加到浏览器中的队列中,直到当前事件退出后才会被处理 例如,如果我尝试加载图像 const img=new Image(); img.onload=函数(){ console.log(“图像加载”); } img.src=https://i.imgur.com/ZKMnXce.png'; 对于(设i=0;i

大多数JavaScript/HTML/DOM/Browser回调和事件都不是即时的或不可重入的(不确定这里的词是否正确)。我的意思是,即使某个事件进入,它也会被添加到浏览器中的队列中,直到当前事件退出后才会被处理

例如,如果我尝试加载图像

const img=new Image();
img.onload=函数(){
console.log(“图像加载”);
}
img.src=https://i.imgur.com/ZKMnXce.png';
对于(设i=0;i<100000;++i){
控制台日志(i);

}
Well EventTarget#dispatchEvent对任何事件都能做到这一点。虽然我不确定它是否符合您的要求,因为您的脚本直接触发事件处理程序,但它确实进入了寄存器部分算法。接下来,我认为postMessage被设置在dispatch注册事件列表的第一位。因为当它们进入register algo时,这取决于我猜的设备,或者至少取决于浏览器的实现:Chrome Safari和FF即使在阻塞while循环中也会注册用户输入事件,并在循环后进行调度。IE忽略了它们……至于反模式的事情,我没有检查详尽的列表,但是我在规范中看到的所有异步操作都遵循模式1.assert参数是有效的。如果需要,同步抛出。2.让舞会成为一个承诺。N解决或拒绝prom。因此,规范要求在内部使用Promise模式,如果任何浏览器不遵循它,那将是一个bug。如果你要问这样的错误,IE和Chrome在历史上的某个时候,在你的img例子中缓存的图像失败了(至少他们没有调用处理程序,如果它是在你设置src之后添加的)