这是一个唯一的ID生成器,可以始终保持唯一性吗?

时间:2019-02-08 03:25:13

标签: javascript

想知道此功能是否可靠,始终是唯一的,还想知道我应该在本地还是在服务器上执行此操作?

 function IDGenerator() {

     this.length = 8;
     this.timestamp = +new Date;

     var _getRandomInt = function( min, max ) {
        return Math.floor( Math.random() * ( max - min + 1 ) ) + min;
     }

     this.generate = function() {
         var ts = this.timestamp.toString();
         var parts = ts.split( "" ).reverse();
         var id = "";

         for( var i = 0; i < this.length; ++i ) {
            var index = _getRandomInt( 0, parts.length - 1 );
            id += parts[index];  
         }

         return id;
     }


 }

2 个答案:

答案 0 :(得分:0)

因为在同一台计算机上无法在同一时间内生成两个时间戳记。

由同一台机器生成并在同一台机器内-唯一的时间戳-保证是唯一的。

答案 1 :(得分:0)

仅使用Math.random的问题是它不是真正随机的。另一方面,仅使用日期时间戳的问题在于,取决于该方法的执行速度,该值可能重复。

我在很多应用程序中都使用了此方法。很简单,而且我从未遇到过由于重复值而引起的冲突:

function uid() {
    return (Date.now().toString(36) + Math.random().toString(36).substr(2, 9));
}