当选项卡关闭时 JavaScript 代码会停止运行吗?

fly*_*bee 4 javascript reactjs

我有一些 Javascript 代码,将在组件完成加载时运行:

function HelloThere() {
     React.useEffect(() => {
         setTimeout(() => {
             // code to make a server call to write data to DB
         }, 60 * 1000);
    }, []);
    return <h1>Hello there</h1>;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果 useEffect 中的代码被命中(组件已加载),但用户在 60 秒超时之前关闭选项卡(或刷新浏览器),代码是否仍会在后台运行并将数据写入数据库?谢谢您的帮助!

Joh*_*ohn 5

不,代码不会运行。我认为您可以使用 来验证这一点localStorage。设置超时,运行脚本,关闭选项卡,然后查看localStorage是否更新。

例如:

setTimeout(() => {
  window.localStorage.setItem('timeout-test', 'update after tab is closed')
}, 5000);
Run Code Online (Sandbox Code Playgroud)