gpt4 book ai didi

javascript - 我怎样才能使毫秒唯一?

转载 作者:搜寻专家 更新时间:2023-11-01 00:31:18 25 4
gpt4 key购买 nike

我正在使用 NodeJs。

我不断收到来自服务器的请求。我向其中添加了一些变量,如 createdTime 并保存到数据库中。当我在某些情况下按 createdTime 对数据进行排序时它不可靠,它是重复的

我怎样才能区分它们?

  • 我不想计算请求数。
  • 我不喜欢更改时间戳的格式。

var createdTime = new Date().getTime();

最佳答案

这是一种将计数器与当前时间相结合的方法,允许您在同一毫秒内拥有多达 1000 个单独的交易,这些交易都有唯一编号,但仍然是一个基于时间的值。

并且,这里有一个工作片段来说明:

// this guarantees a unique time-based id
// as long as you don't have more than 1000
// requests in the same ms
var getTransactionID = (function() {
var lastTime, counter = 0;
return function() {
var now = Date.now();
if (now !== lastTime) {
lastTime = now;
counter = 0;
} else {
++counter;
}
return (now * 1000) + counter;
}
})();

for (var i = 0; i < 100; i++) {
document.write(getTransactionID() + "<br>");
}

如果你想要一些可能跨集群工作的东西,你可以使用 process.hrtime() 来使用高分辨率计时器而不是计数器,然后使 id 成为一个字符串,它可以如果需要,可以解析为相对时间。因为这需要 node.js,所以我无法在浏览器中制作一个工作片段,但我的想法是:

// this makes a unique time-based id
function getTransactionID () {
var now = Date.now();
var hrtime = process.hrtime();
return now + "." + ((hrtime[0] * 1e9) + hrtime[1]);
}

关于javascript - 我怎样才能使毫秒唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32677318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com