假设我在某个组件的生命周期方法中有一个函数,如此
componentDidMount() {
this.taskRunner();
}
taskRunner() {
setInterval((function(scope){
return function(){
scope.props.callApiandRecordtoDatabase();
};
})(this),360000);
}
如果当前没有人访问该网页,此进程是否会继续在托管网站上运行?我怎么能确保它呢?
答案 0 :(得分:1)
是的,如果您没有明确清理计时器,它将继续运行。这就是为什么建议您清理componentWillUnmount()
上的内容。正如React docs所说:
在卸载和销毁组件之前立即调用componentWillUnmount()。在此方法中执行任何必要的清理,例如使计时器无效,取消网络请求或清除在componentDidMount()中创建的任何订阅。
答案 1 :(得分:0)
如果当前没有人访问该页面,此过程是否会继续在托管网站上运行?
不,它不会。我认为你混淆了客户端和服务器的概念。 ReactJS将在客户端(即Google Chrome浏览器)上运行。如果该脚本被执行并且组件卸载,它仍将保留在内存中,并且该函数将在360,000 ms后执行,除非JavaScript进程停止,如果用户关闭执行该脚本的选项卡,则很可能会发生这种情况。您可以在此处使用我在WebpackBin上设置的示例:https://www.webpackbin.com/bins/-KyTgz4IOADwQYHiTvz9。
你想要完成什么?为您的问题添加一些上下文并没有什么坏处,社区可能会建议您之前可能没有考虑过的更合适的解决方案。