【发布时间】:2016-02-25 13:34:02
【问题描述】:
我们使用这个函数来生成 GUID 并分配给记录:
var genguid = function b(a) {
return a ? (a ^ Math.random() * 16 >> a / 4).toString(16) : ([1e6] + '').replace(/[018]/g, b)
}
问题是,我们开始从多个设备获取重复。
随机部分可以使用盐,可能来自当前时间或位置(因为这些用于移动设备)。
关于使用什么功能/方法来获得它的任何建议?
更新: 该代码在使用 JS 的移动应用程序上运行。我只是在 1 万亿个 GUID 上运行旧代码,并且没有重复。所以我猜这与移动客户端上的 JS 实现有关?
【问题讨论】:
-
为什么生成 GUID 取决于传入的参数?在没有传入
a的情况下,它看起来根本就不是很“全球唯一”...... -
听起来很像this article。 here ("Modern Browsers") 描述了一个可能的解决方案。
-
这是有趣的部分。该代码在使用 JS 的移动应用程序上运行。我只是在 1 万亿个 GUID 上运行旧代码,并且没有重复。所以我猜这与移动客户端上的 JS 实现有关?
-
@R0b0tn1k 我提到的那篇文章指出,尤其是 V8 的
Math.random()实现很差,因此 Chrome 和相关浏览器使用它更容易产生冲突。
标签: javascript guid uuid