具有精确超时的setInterval

时间:2015-07-29 10:12:54

标签: javascript

是否有某种方法可以像setInterval一样创建函数,但每次超时都完全相同。 在setInterval中,超时会随着给定的超时而变化,稍微多一点,但会非常罕见,但是非常罕见。

例如:

var before = new Date().getTime();
 setInterval(function() {
 var after = new Date().getTime();
 newTab.window.location=someURL;
 console.log((after - before));
 before = after;
}, 50000);

打印50000,50002,50005,50994,50997,49999,50003,49998等。 我想要打印50000

1 个答案:

答案 0 :(得分:3)

Javascript仅在一个流程中执行,因此如果有另一个进程同时执行某些操作,则总是有可能无法及时执行计时器功能。

如果您确实需要确切的时间间隔,您可以提前阻止任何其他流程的执行,并希望获得最佳效果:

    $fb = new Facebook\Facebook([
      'app_id' => fbappid,
      'app_secret' => fbappsecret,
      'default_graph_version' => 'v2.2',
      ]);

    $helper = $fb->getRedirectLoginHelper();

    $permissions = ['email', 'user_birthday', 'user_location', 'user_hometown', 'user_relationships']; // Optional permissions

    $loginUrl = $helper->getLoginUrl('http://localhost/urbanportal/wifilogin.php?origlink='.$_SESSION['origlink'].'&routerlink='.$_SESSION['routerlink'].'&siteid='.$_SESSION['siteid'], $permissions);

虽然操作系统阻止了该过程但仍然不准确...