我们说我在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我相信我错过了什么。
感谢您的帮助!