繁体   English   中英

Chrome扩展程序键盘快捷键需要按2下才能更改值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM