我有一个应用程序在做一些HTTP请求,每次我向API发送请求时,我需要在报头中发送一个时间戳参数,它必须是一个整数,并且这个数字永远不能等于或小于前一个数字。
因此,为了处理这个问题,我使用了一个简单的解决方案:
const timestamp = Math.round(new Date().getTime() / 1000)
正如你们所知道的,这总是会产生一个比前一个更大的数字。但有时它根本不能正确刷新。我每隔10秒发出一次新请求,但有时函数生成的数字与10秒前相同……怎么做?
所以我需要的是这个问题的解决方案
附言:我也尝试过使用Date.now()
,同样的问题也出现了
发布于 2021-06-02 22:11:13
我看到你说你每10秒才做一个新的请求,所以我关于少于每秒一次的评论不应该适用。
被调整的时钟不应该是一个频繁的问题,但如果你的计算机的时间被同步到一个时间服务器,而且它的内部时钟不是很准确,那么当系统时钟重新同步时,就需要不时地调整大于10秒的时间。
解决该问题的唯一方法(如果这就是问题所在)是跟踪您上次发布的时间戳,并执行以下操作:
let lastTimestamp = 0; // Outside of the function wrapping the code below
//
const timestamp = Math.max(Math.round(Date.now() / 1000), lastTimestamp + 1);
lastTimestamp = timestamp;
https://stackoverflow.com/questions/67806412
复制相似问题