如何确保setInterval检查URL更改只运行一次?

时间:2016-08-30 15:14:50

标签: javascript setinterval

我有一段JavaScript代码,用于检查URL是否有更改(单页应用程序),然后触发事件。但是,库可以多次实例化,当有多个计时器检查URL更改时,这将是一个问题。我不确定如何在不使用全局变量的情况下解决这个问题。

这是片段。

(function() {
  var _oldURL = window.location.href;
  setInterval(function() {
    var currentURL = window.location.href;
    console.log(currentURL);
    if (currentURL !== _oldURL) {
      console.log('Fire event');

      _oldURL = currentURL;
    }
  }, 1000);
})();

如果我多次运行此代码段,会有更多的计时器检查网址是否发生变化。因此,每次URL更改时,Timer1和Timer2都将触发导致双重事件的事件。我已经通过使用全局变量解决了这个问题,我认为这是最好的解决方案。我不确定是否有其他方法可以解决这个问题?

这就是我所做的。

(function() {
  window._oldURL = window.location.href;
  setInterval(function() {
    var currentURL = window.location.href;
    console.log(currentURL);
    if (currentURL !== window._oldURL) {
      console.log('Fire event');

      window._oldURL = currentURL;
    }
  }, 1000);
})();

0 个答案:

没有答案