javascript同步选项卡之间的代码执行

时间:2016-08-12 15:46:39

标签: javascript cookies browser local-storage

我陷入两难境地。我正在使用此代码生成唯一ID并将其存储在cookie或本地存储中。如果没有先前的ID设置,我只生成此ID。

//read the ID from cookie or local storage
var id=readID();
if(id==null){
   //no ID found, generate an ID
   id=generateID();

   //store the ID to use it when we come back
   storeID(id);
}

此代码的工作方式与我预期的大约90%的时间一样,只生成一个ID,但有时当没有ID的用户同时打开2个或更多选项卡(或者在非常短的时间间隔内)时,它最终生成2标识。 我感兴趣的是一些黑客策略,用于在读取,生成和存储ID时锁定代码,并且仅在一个选项卡中执行。直到锁被释放。

我知道这可能不起作用,因为标签是分开的,但我在想是否可以锁定本地存储对象以进行读写操作?

我也对其他解决方案持开放态度。

更新:我被问及generateID算法是怎样的。我说这没关系,但为了简化这一点,我们将使用Math.random()这样:

function generateID(){
   return Math.random();
}

0 个答案:

没有答案