我将尝试正确解释我的问题.我想每30秒产生一次数字,如下所示:
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
setTimeout(function(){
getRandomNumber(0,14);
}, 30000);
Run Code Online (Sandbox Code Playgroud)
这很好,但在每个设备上都不一样,比如我用这个代码打开页面,我会得到随机数,但是如果我的朋友在打开页面后5秒钟打开它,就会出现延迟.有没有办法解决它?我认为像获取时间服务器并根据他这样做可以工作,但我不知道该怎么做.
这个问题没有完美的解决方案,这里有两种选择:
一种是简单的,一种是复杂的,应该更精确。
如果您在所有设备上都有相同的时间*,您可以用于new Date().getTime() % 30000第一次调用,因此它们都处于同步状态,然后在超时中始终使用常量 30000。
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
setTimeout(function() {
getRandomNumber(0, 14);
}, new Date().getTime() % 30000); // first time use this
Run Code Online (Sandbox Code Playgroud)
* 时区并不重要,重要的是一分钟的秒数
另一种方法是让服务器通过他的时间,然后猜测延迟来纠正加载时间,并使用该替代new Date().getTime()
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |