4
我正在嘗試使用chrome.storage.sync.get
來取回設置。我不明白的是,當我撥打console.log(settings)
時,它會返回正確的值。但是,如果我撥打console.log(settings.speeds)
,它會返回舊值。我認爲這與chrome.storage.sync.get
的異步本質有關。有人能解釋一下這裏發生了什麼嗎?如果有解決方案。我嘗試使用callback
,但它沒有幫助。我想一個解決方案是隻使用一個級別,但這不是我想要的。chrome.storage.sync.get與外層對象同步,但內部對象不同步?
謝謝大家的幫助。
var settings = {
speeds: {
speedInput1: 1.0, // after get, new value should be 11.23
speedInput2: 2.0 // after get, new value should be 4.50
},
shortcuts: {
shortCut1: '1',
shortCut2: '2'
}
};
chrome.storage.sync.get(settings, function(result) {
// Retrieve speed settings
for (var key in settings.speeds) {
if (key in result.speeds) {
settings.speeds[key] = result.speeds[key];
}
};
// Retrieve shortcut settings
for (var key in settings.shortcuts) {
if (key in result.shortcuts) {
settings.shortcuts[key] = result.shortcuts[key]
}
};
});
console.log(settings); // correct updated values
console.log(settings.speeds); // old values