[英]Chrome extension keyboard shortcut takes 2 presses to change value
尝试在我正在开发的Chrome扩展程序中实现Chrome键盘快捷键 API时遇到一个奇怪的问题。 简短地说,我必须按两次指定的键盘快捷键才能更改存储的值。
这是我的键盘快捷键监听器:
chrome.commands.onCommand.addListener(function(command) {
chrome.storage.sync.get([command], function(result) {
toggle = result[command];
});
toggle = toggle_value(toggle)
chrome.storage.sync.set({[command]: toggle }, function() {
console.log( {[command]: toggle} );
});
});
还有我的toggle_value()
函数:
function toggle_value(value) {
if(value == 0) {
return 1;
} else if(value == 1) {
return 0;
}
}
我的键盘快捷键侦听器接收清单中设置的command
,从Chrome同步存储数据库中获取相同键名的对应值,切换该值,然后使用相同的键名将其设置回Chrome同步存储。
如前所述,仅连续两次按下键盘快捷键后,才能真正切换command
键的值。 我花了几个小时调试它,但是没有运气,请帮助我。
问题。 您使用的功能是异步的,但是您的代码正在同步运行。 如果嵌套,您的代码应该可以工作。
chrome.commands.onCommand.addListener(function(command) {
chrome.storage.sync.get([command], function(result) {
toggle = result[command];
toggle = toggle_value(toggle);
chrome.storage.sync.set({[command]: toggle }, function() {
console.log( {[command]: toggle} );
});
});
});
建议。 您应该研究Promises
以更优雅地处理异步代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.