问题是——不可能将数据写入全局变量,这样它们就可以在代码中使用。
var proxySetting;
chrome.storage.local.get(['proxySetting'], function (result) {
proxySetting = JSON.parse(result.proxySetting);
// при console.log(proxySetting) выводятся данные с хранилища, но позже ошибка будет undefined
// то есть эта анонимная функция выполняется асинхронно и заканчивается по факту позже конца скрипта
});
document.querySelector('td:nth-child(2)').innerHTML = proxySetting['http_host']; // здесь и ниже как раз undefined
document.querySelector('td:nth-child(3)').innerHTML = proxySetting['http_port'];
document.querySelector('td:nth-child(4)').innerHTML = proxySetting['auth']['user'];
document.querySelector('td:nth-child(5)').innerHTML = proxySetting['auth']['pass'];
// при console.log(proxySetting) также undefined
下面的选项当然可以解决问题
chrome.storage.local.get(['proxySetting'], function (result) {
var proxySetting = JSON.parse(result.proxySetting);
document.querySelector('td:nth-child(2)').innerHTML = proxySetting['http_host'];
document.querySelector('td:nth-child(3)').innerHTML = proxySetting['http_port'];
document.querySelector('td:nth-child(4)').innerHTML = proxySetting['auth']['user'];
document.querySelector('td:nth-child(5)').innerHTML = proxySetting['auth']['pass'];
});
但前提是我使用存储中的一个参数并且在工作过程中不覆盖它,但我只是进一步做,一般来说,问题是我如何等待这个函数被执行以便我可以实现该功能不是来自存储库的数据检索功能,而是来自外部。
PS 使用 chrome.storage.local/chrome.storage.sync 是非常可取的,同时保持这种状态。
PSS Implemented sleep(2000) 没有帮助,显然这里还有另一个问题。
尝试使用异步等待。