IndexedDB 在重新加载浏览器之前,是否可以执行长时间运行的函数?

j8yoct9x  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(1)|浏览(177)

我确实通过以下函数防止了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
};

但是,在出现“Reload site?”消息时,save_user_data_to_indexed_db()函数没有执行。我想,如果我可以在显示消息时执行函数,我也许可以通过编程方式自动回答相同的对话框,让浏览器继续重新加载页面。
有没有办法让浏览器等待这种操作?

pepwfjgg

pepwfjgg1#

一般来说,没有办法让浏览器等待。在这种情况下,我经常做的是同步地将数据写入中间位置,如localStorage,然后在以后有时间时(如下次再次加载页面时)或从服务工作者内部异步地将数据复制到indexedDB。

相关问题