是否可以在重新加载浏览器之前执行一个长 运行 函数?

Is it possible to execute a long running function before the browser is reloaded?

我确实通过以下函数阻止了我的 Web 应用程序中的页面重新加载:

window.onbeforeunload = (event) => {
  const e = event || window.event;
  // Cancel the event
  e.preventDefault();

  save_user_data_to_indexed_db();

  if (e) {
    e.returnValue = ''; // Legacy method for cross browser support
  }
  return ''; // Legacy method for cross browser support
};

但是,save_user_data_to_indexed_db() 函数在“重新加载站点”期间没有被执行?信息。我想如果我可以在显示的消息期间执行我的功能,我也许可以自动以编程方式回答相同的对话框并让浏览器继续重新加载页面。

有没有办法让浏览器等待这种操作?

一般是没有办法让浏览器等待的。在这种情况下,我经常做的是将数据同步写入一个中间位置,例如 localStorage,然后在有时间时将该数据异步复制到 indexedDB,例如下次再次加载页面时,或者从在服务人员中。