谷歌浏览器同步存储“获取”命令运行什么顺序
What order do Google Chrome Sync Storage 'Get' Commands run?
我很难确定简单计数过程的时间。
当我使用控制台.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 不将值存储在局部变量中
相关文章:
- http.listen()在运行时接受终端命令
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- 在Flask中使用.getJSON请求时,只运行一次命令
- PHP:运行后变量不工作“;如果“;命令
- 如何在节点模块中从命令行运行函数
- 如何在命令行中运行/调试javascript
- 无法运行安卓.bat文件.xcopy 命令停止执行
- grunt 命令在配置 EaselJS 项目时不运行服务器
- 如何在 JavaScript 中运行 shell 命令
- 在命令运行时以Grunt显示输出
- 从命令行运行JS文件
- 如何在命令提示符下运行js文件
- 运行--eval mongodb命令时出错
- 打开时运行命令的Illustrator文件
- 无法通过 npm 脚本“babel:找不到命令”运行 babel
- 谷歌浏览器同步存储“获取”命令运行什么顺序
- JavaScript 在命令运行太早时打开新窗口而不是选项卡
- 为什么相同的javascript可以使用runscript命令运行,但不能在RC中的getEval中运行
- 如何使用自定义命令运行节点文件
- 如何使用单个命令运行多个QUnit(node.js)测试文件