Chrome中的Javascript事件处理程序将并行执行?

时间:2016-06-25 05:16:37

标签: javascript google-chrome google-chrome-extension google-chrome-devtools google-chrome-app

Javascript是单线程的,这意味着所有事件处理程序都是在没有中断的情况下执行的,所有处理程序都是按顺序执行的,一个接一个地执行。在我以前的所有经历中都是如此,直到我遇到以下代码片段。

我编写以下代码,并在 Chrome (版本51.0.2704.103 m(64位))中执行

let port = chrome.runtime.connect("appid");
port.onMessage.addListener(function (msg: string) {
    console.log("enter");
    for (let i = 0; i < 9999999; ++i) { }
    console.log("leave");
});

另一方(对应于appid)将通过该端口发送2条消息。

在正常执行中(在Chrome devtools中没有设置断点),控制台输出为:

enter
leave
enter
leave

这是完美的。但是,如果我在console.log(“enter”)设置断点;在Chrome devtools中,控制台输出是:

enter
enter
leave

似乎Chrome不会在断点处停止,仍接受第二条消息并运行。 Chrome中是否有超过1个线程来处理Javascript事件?在哪种情况下,我应该考虑Javascript代码不会按顺序运行?

0 个答案:

没有答案