javascript可以在try块之前切换执行吗?

时间:2016-08-23 15:18:38

标签: javascript google-chrome

我们说我在javascript中有以下代码:

ajaxRequest(function(response) {
    console.log("Response 1 happening");
    console.log("Response 1 continuing");
});

ajaxRequest(function(response) {
    console.log("Response 2 happening");
    console.log("Response 2 continuing");
});

现在假设响应1和2可能以任何顺序发生,但我们希望它们不能交错,也就是说执行不会在代码中间切换。并且JS没有线程,所以它们不能同时执行。

但是,如果我将第二个请求更改为:

,则(特别是在Chrome上)
ajaxRequest(function(response) {
    console.log("Response 2 happening");
    try {
        console.log("Response 2 continuing in try block");
    }
});

我有时会看到:

Response 2 happening
Response 1 happening
Response 1 continuing
Response 2 continuing in try block

这可能吗?如果是这样,JS解释器何时可以切换正在执行的代码?

我应该说这实际上不是我的代码(在语句之间涉及相当多的计算),但我试图重现关键部分。 (异步行为是由AJAX请求和setInterval调用的组合引起的。)如果这不可能,我可能误解了一些正在发生的事情,但我没有&#39我相信我错过了什么。

感谢您的帮助!

0 个答案:

没有答案