Javascript时间戳号不是唯一的

时间:2013-11-21 12:05:34

标签: javascript timestamp

我需要生成一个唯一的号码才能在我的代码中使用。我使用

var id = new Date().valueOf()

我知道上面的返回毫秒数。 但这些值并不是唯一的。例如: 1385035174752 。这个数字生成两倍或更多。

我的问题是为什么它不是唯一的?如何从当前日期/时间获得唯一编号?

3 个答案:

答案 0 :(得分:9)

如果您需要唯一性,请使用Math.random()任何Date() API。

Math.random返回介于0和1之间的整数。如果您确实想要基于当前时间的半唯一编号,则可以合并Date API与Math.randomFor example

var id = new Date().getTime() + Math.random();

在现代浏览器中,您还可以使用performance.now()。此API保证每个新调用的返回值都是唯一的。

答案 1 :(得分:1)

在Windows上,计时器的分辨率约为10.5毫秒。所以你有机会在几毫秒之后获得相同的值。当然有更好的计时器,但AFAIK它们不适用于JavaScript。

答案 2 :(得分:0)

example.Even performance.now() 有时也不会给出唯一的数字。您必须制作自己的系统来生成它。类似于创建一个计数器,每次访问时将其加 1。