Hiii大家, 我已经使用html创建了一个基于选项卡的应用程序,并且我已经使用 setInterval 来定期间隔后从服务器同步应用程序数据。但问题是,在同步数据时,如果我在标签之间切换,则执行代码会停止,因此无法完成同步。
我想在不同的线程中调用sync(),但无法获得任何帮助。关于如何实现这一点的任何想法,以便在选项卡之间切换时,我的JS代码继续执行。 我的JS代码的粗略结构是
setInterval(
sync();
,3000);
function sync()
{
// Code for sync data
}
答案 0 :(得分:4)
您的示例的一个问题是,您只能一次执行sync
(因为您在()
调用中向其添加了setInterval
。基本上你执行sync
一次并传递结果。
另一个问题是;
,它终止了这一行。
因此,删除括号和分号可能会解决您的问题:
setInterval(sync, 3000);
虽然我建议您使用超时而不是间隔 - 以防请求超过三秒。
function sync() {
// Code for sync data
setTimeout(sync, 3000);
}
sync();
总的来说,您的JavaScript使用事件循环在单个线程上执行,以按顺序执行所有事件。线程无论如何都无法解决您的问题,因为这是一个轻微的语法问题。
Web workers将允许浏览器中的其他线程,NodeJS也有一个线程机制 - 但应谨慎使用它们。
答案 1 :(得分:0)
您可能想要使用Web Workers
工作线程可以在不干扰用户界面的情况下执行任务。此外,他们可以使用XMLHttpRequest执行I / O(尽管responseXML和channel属性始终为null)。
您可以通过message
与网络工作者沟通。作为一个想法,您可以在页面启动时生成单个工作程序,然后向其发送包含要上载的数据的消息。它会默默地在后台为你做。
另一个想法是使用Web Sockets。您的浏览器可以listen
来自服务器的传入消息。服务器可以broadcast
更新您的浏览器。