history.back()之后的代码会发生什么

What happens to code after history.back()?

本文关键字:什么 代码 back 之后 history      更新时间:2023-09-26

我有如下代码:

window.history.back();
myFunction(10);
  • history.back()是阻塞/非阻塞呼叫吗?

  • 是否保证myFunction()将被执行?还是不执行?

  • 这是否是history.back()异步发生并且是否调用CCD_ 4取决于不可控事件的发生时间?

规范规定history.back对任务进行排队。

因此,实际的历史操作代码(JS实现内部)将在主事件循环的下一次运行期间执行。您对myFunction的调用在当前一轮执行中同步执行,因此它将始终在兼容的环境中执行。

但是,只有myFunction中的同步代码才能保证执行。考虑这个例子:

function myFunction() {
  console.log('synchronous');
  debugger
  setTimeout(function() {
    console.log('async');
    debugger
  })
}
window.history.back();
myFunction();

总是命中第一条调试器语句。第二个是使用setTimeout延迟到未来的事件循环记号,但不会。

本文很好地解释了JavaScript事件循环