如果您有触发某个功能的网络消息并且消息快速进入,那么该功能是否可以在上一个完成之前执行?
document.addEventListener('some_message', some_func, false);
function some_func (data){
//Is the code here always executed before the next function is executed?
}
答案 0 :(得分:3)
由于只有一个Javascript线程在运行,因此一次只能运行一段代码。因此,这将始终按照触发事件的顺序执行,并且一次只执行一次:
function callback_func(data) {
alert(data);
}
但是,如果您的回调工作异步,即将该线程返回给浏览器,那么它是不可预测的:
function callback_func(data) {
setTimeout(() => {
// who knows when this will be called ¯\_(ツ)_/¯
alert(data);
}, Math.random());
}
答案 1 :(得分:0)
是的,这就是异步事件在JavaScript中的工作方式。
您可以查看this article,其中解释了async-await在现代JavaScript中的工作原理。