如何使用定时器协调2个函数 - > JavaScript的

时间:2011-04-20 18:41:03

标签: javascript timer

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

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

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

2 个答案:

答案 0 :(得分:1)

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

从更积极的方面来看,HTML5 will support multithreading似乎确实令人鼓舞,但它并没有真正解决眼前的问题。

答案 1 :(得分:1)

Javascript实际上是单线程的,除了定时器以异步方式执行

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

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