我在用nodejs。
我不断收到服务器的请求。
我添加了一些变量,比如createdTime,并保存到数据库中。
当我按createdTime排序数据时,在某些情况下它是不可靠的,它会重复
我如何区分它们?
我不想数请求。
我不喜欢更改时间戳的格式。
var createdTime=新日期().getTime();
最佳答案
这里有一种将计数器与当前时间相结合的方法,允许您在同一ms内有多达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]);
}