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