近期遇到的一個問題,使用某個外部插件生成右鍵菜單,右鍵菜單內部實現以當前時間戳(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位隨機數。