近期遇到的一个问题,使用某个外部插件生成右键菜单,右键菜单内部实现以当前时间戳(milliseconds)为id,包括我门自己在做一些开发工作的时候,经常喜欢以时间戳作为唯一标识.
这是有问题的: 当操作较连续时,极有可能生成重复的id.
说说右键菜单的问题: 我在一个循环中,为不同的组件赋予了不同的菜单,但奇怪的是有时会出现两个组件菜单相同的情况,查了很才发现有两个菜单的id竟然完全相同,导致后面生成的菜单项虽然内容不同,但通过id显示出来时是第一个菜单。比如下面这个例子(简化的):
for(var i = 0 ; i < 10; ++i){
console.log(new Date().getTime());
}
上面代码打印出的10个时间戳,好几个都会是重复的。
怎么解决呢?建议在以时间戳作为id时,后面附加几位随机数。
比如new Date().getTime() + parseInt(Math.random()*1000),附加4位随机数。