Как сделать запрос к chrome.storage не асинхронно?

139
21 марта 2018, 06:42

Пишу расширение для Хрома. На странице Options сохраняю некоторые параметры с помощью chrome.storage.sync.set:

chrome.storage.sync.set({
  x: document.getElementById('a').value,
  y: document.getElementById('b').value,
  z: document.getElementById('c').value
}, function() {...});

Дальше в Content script'е хочу выполнить нужное мне в зависимости от значения этих параметров. Сперва при загрузке нужной страницы достаю эти данные и присваиваю их значения некоторым переменным:

var baseA = "";
var baseB = "";
var baseC = "";
chrome.storage.sync.get({
    x: "",
    y: "",
    z: ""
}, function(items) {
    setValues(items.x, items.y, items.z);
});
function setValues(v1,v2,v3) {
    baseA = v1;
    baseB = v2;
    baseC = v3;
    console.log('baseA | ' + baseA);
    console.log('baseB | ' + baseB);
    console.log('baseC | ' + baseC);
}

Потом пытаюсь выполнить требуемое:

function doSomething() {
    if (baseA !="") {
        console.log('true ' + baseA);
    }
    else {console.log('false')}
}
doSomething();

Лезу в Options.html, задаю параметры:

x = "aaa";
y = "bbb";
z = "ccc";

Лезу на страницу, где должен отработать контент скрипт и получаю в консоли вот такой результат:

false
baseA | aaa
baseB | bbb
baseC | ccc

То есть, функция doSomething() срабатывает раньше.
Вызывать doSomething() через setTimeout неинтересно, поскольку контент скрипт выполняется после загрузки документа, а сколько она займет времени, неизвестно.
Я так понимаю, это все из-за того, что doSomething() и chrome.storage.sync.get выполняются асинхронно. А что делать, чтобы гарантированно получить значения параметров до того, как мне они потребуются?

READ ALSO
Проблема с indexOf()

Проблема с indexOf()

Возникла следующая проблема: код реагирует на ЛЮБОЕ значение, а должен только если там есть английские буквы и/или цифры

109
Наполнить переменную типа rowtype в oracle из php

Наполнить переменную типа rowtype в oracle из php

Всем привет) в общем ситуация) в oracle есть переменная типа rowtype, как мне ее наполнить данными полученными с формы, с помощью PHPСейчас я делаю...

191
Получить данные из строки в корректной кодировке

Получить данные из строки в корректной кодировке

Есть строка вида firstName=%D0%9D%D0%B8%D0%BA%D0%BE%D0%BB%D0%B0%D0%B9&lastName=&patronymic=&phone=80004064909Как получить корректное значение firstName и phone, например? Это не get-запрос,...

153