可以在上一次执行之前执行Web消息回调函数吗?

时间:2018-05-25 14:03:59

标签: javascript

如果您有触发某个功能的网络消息并且消息快速进入,那么该功能是否可以在上一个完成之前执行?

document.addEventListener('some_message', some_func, false);
function some_func (data){
   //Is the code here always executed before the next function is executed?
}

2 个答案:

答案 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中的工作原理。