首次使用 chrome.storage.sync.get 的选项问题

js *_*oob 3 google-chrome-extension

chrome.storage.sync.get('savedItem', function (result) {

    //some if else condition for result.savedItem here
    myResult = result.savedItem;
    });

$('p').val(myResult);
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我得到了一个 undefined,因为第一次 user 没有在我的选项页面中保存设置。我试图为 myResult 设置一个默认值,if(result.savedItem == undefined) myResult = '';但我仍然没有定义。为什么?

Xan*_*Xan 6

2个问题同时进行。

1)您可以通过提供字典为不在存储中的值设置默认值:

chrome.storage.sync.get({'savedItem' : 'myDefault'}, function (result) {
  // result.savedItem is the saved value or 'myDefault'
});
Run Code Online (Sandbox Code Playgroud)

2)最大的问题是不了解异步代码的工作原理。

$('p').val(myResult);myResult分配之前执行,因为chrome.storage.sync.get立即返回,function(result){...}稍后调用。

已经有的有关问题,看一看,说,这个这个