如何使用定时器协调两个功能->;javascript

如何使用定时器协调两个功能->;javascript,javascript,timer,Javascript,Timer,我现在正在用javascript构建一个小应用程序,但我遇到了一个严重的问题 我使用了至少3个带有计时器的函数(前两个函数无休止地运行),它们都使用一些全局变量(在这种情况下,由于某些函数,它们需要是全局的)。 这3个外部功能没有定时器。其中一个计时器功能仅在执行某个操作时激活,影响到第二个功能(现在我用一个标志禁用了它)。但是,当这个计时器函数结束时,另一个计时器函数仍在运行,试图获取一些不一致的数据(精确地说,试图获取矩阵上的负索引)并崩溃(标记已切换,但主数据尚未修复->类似于多线程问题)

我现在正在用javascript构建一个小应用程序,但我遇到了一个严重的问题

我使用了至少3个带有计时器的函数(前两个函数无休止地运行),它们都使用一些全局变量(在这种情况下,由于某些函数,它们需要是全局的)。 这3个外部功能没有定时器。其中一个计时器功能仅在执行某个操作时激活,影响到第二个功能(现在我用一个标志禁用了它)。但是,当这个计时器函数结束时,另一个计时器函数仍在运行,试图获取一些不一致的数据(精确地说,试图获取矩阵上的负索引)并崩溃(标记已切换,但主数据尚未修复->类似于多线程问题)


我想问的是,有没有办法让一个函数“等待”另一个函数以javascript结束?或者其他任何方式,或者在它们之间协调这些函数(以互斥方式或某种方式)?

Javascript是单线程的,因此几乎不可能提出任何“多线程”类型的解决方案。我会尝试想出一些方法来使用一个函数和一个计时器,并用标志处理不同的逻辑片段。例如,如果设置了标志A,可能您可以执行一段逻辑,然后设置标志B。当计时器再次触发时,您可以执行标志B逻辑(使用相同的函数)


从更积极的角度来看,这似乎是令人鼓舞的,但它并没有真正解决当前的问题。

Javascript实际上是单线程的,只是计时器是异步执行的

如果这是在浏览器中运行的,那么我强烈建议使用jQuery的新“延迟”对象,或者任何其他实现类似功能的框架


这些允许您仅在一组异步事件全部完成时触发另一个回调,这可能正是您所需要的。

这是浏览器中的JavaScript,还是Rhino或Node.js等独立环境中的JavaScript?解决方案:无全局,最小化范围,使用message passing.Thx作为答案,我会尝试这样做的建议(是的,这是一个浏览器应用程序),但我还是想使用纯javascript作为我的第一个项目,以更好地理解它