近期遇到的一個(gè)問(wèn)題,使用某個(gè)外部插件生成右鍵菜單,右鍵菜單內(nèi)部實(shí)現(xiàn)以當(dāng)前時(shí)間戳(milliseconds)為id,包括我門(mén)自己在做一些開(kāi)發(fā)工作的時(shí)候,經(jīng)常喜歡以時(shí)間戳作為唯一標(biāo)識(shí).
這是有問(wèn)題的: 當(dāng)操作較連續(xù)時(shí),極有可能生成重復(fù)的id.
說(shuō)說(shuō)右鍵菜單的問(wèn)題: 我在一個(gè)循環(huán)中,為不同的組件賦予了不同的菜單,但奇怪的是有時(shí)會(huì)出現(xiàn)兩個(gè)組件菜單相同的情況,查了很才發(fā)現(xiàn)有兩個(gè)菜單的id竟然完全相同,導(dǎo)致后面生成的菜單項(xiàng)雖然內(nèi)容不同,但通過(guò)id顯示出來(lái)時(shí)是第一個(gè)菜單。比如下面這個(gè)例子(簡(jiǎn)化的):
for(var i = 0 ; i < 10; ++i){
console.log(new Date().getTime());
}
上面代碼打印出的10個(gè)時(shí)間戳,好幾個(gè)都會(huì)是重復(fù)的。
怎么解決呢?建議在以時(shí)間戳作為id時(shí),后面附加幾位隨機(jī)數(shù)。
比如new Date().getTime() + parseInt(Math.random()*1000),附加4位隨機(jī)數(shù)。