谷歌浏览器同步存储“获取”命令运行什么顺序

What order do Google Chrome Sync Storage 'Get' Commands run?

本文关键字:命令 运行 什么 顺序 获取 同步 存储 谷歌浏览器      更新时间:2023-09-26

我很难确定简单计数过程的时间。

当我使用控制台.log和警报进行调试时,代码似乎是随机运行的 - 而不是按照它在函数中出现的顺序运行。

我正在创建一个 Google 扩展程序,并使用同步存储来存储设置并检索它们以更新用户的值。

例如,我试图将一个字符串塞进"localBody"中,这样我就可以计算字符串中的单词。

所以首先在后台.js是一个侦听器,当特定的同步变量被更改时触发......它从同步存储中提取一个值:

chrome.storage.onChanged.addListener(function(changes, sync) {if (changes["Clabel"]){alert("Label Changed - start listener update...");
//Get body, label, group from Sync Storage
chrome.storage.sync.get('Cbody', function (results) {   
localBody = results.Cbody;
console.log("first pulling body string from sync storage" + localBody);
});

稍后在代码中,localBody 被发送到一个计算字符串中单词的 sub

wordCount = wordCount + countWords(localBody);              //Update total word count with latest addition

此代码失败("extensions::uncaught_exception_handler:8 storage.onChanged 的事件处理程序中出错:类型错误:无法读取未定义的属性'替换'"),控制台显示它在同步存储"get"命令之前运行。

我尝试以无数种方式完成这项基本任务,并且不断遇到从同步存储中提取的不可预测性。我不知道如何解决这个问题 - 我需要拉取一个值并修改它,然后将其塞回同步存储。

好吧,对于像我这样试图在仅粗略了解 javascript 的情况下构建 Google 扩展的笨蛋......

"获取"过程是异步的。因此,您需要使用回调来控制所需的值何时可用。

这是一个很好的解释 - 我逐字使用了示例代码:Chrome.storage.sync.get 不将值存储在局部变量中