想知道此功能是否可靠,始终是唯一的,还想知道我应该在本地还是在服务器上执行此操作?
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;
}
}
答案 0 :(得分:0)
因为在同一台计算机上无法在同一时间内生成两个时间戳记。
由同一台机器生成并在同一台机器内-唯一的时间戳-保证是唯一的。
答案 1 :(得分:0)
仅使用Math.random的问题是它不是真正随机的。另一方面,仅使用日期时间戳的问题在于,取决于该方法的执行速度,该值可能重复。
我在很多应用程序中都使用了此方法。很简单,而且我从未遇到过由于重复值而引起的冲突:
function uid() {
return (Date.now().toString(36) + Math.random().toString(36).substr(2, 9));
}