chrome .storage.X.get работает медленно. Как получить значение перед началом работы при загрузке страницы? - PullRequest
0 голосов
/ 06 августа 2020

Я установил content_script «run_at»: «document_end». Он изменяет страницу, но я хочу, чтобы пользовательский параметр определял, следует ли вносить изменения или нет.

Сначала я попробовал chrome.storage.sync.get. Он был объявлен в начале сценария, а код, запускающий модификацию, был объявлен в конце сценария. (Посередине находятся функции и переменные.) Но когда я его тестировал, обратный вызов sync.get был вызван после кода модификации. То есть я получаю следующий результат:

Using the value.
Read value from storage.

, если код похож на тот, что внизу. Я думал, что это из-за задержки при получении данных с удаленного сервера Google, но когда я изменил sync на local, результат был таким же. Как я могу прочитать настройку перед выполнением фактической работы?

  1. Должен ли я начать работать, когда storage.X.get вернется, то есть при обратном вызове? Но это означало бы ненужную задержку перед началом работы. Если это единственный способ, я воспользуюсь этим.
  2. Разве нет способа сделать storage.X.get быстрее, например, кэширование?
  3. Если storage.X.get не поддерживает кеширование , как мне самому кешировать? Модификация выполняется только один раз для загрузки страницы, и сценарий содержимого воссоздается при каждой загрузке страницы. Есть ли способ сохранить переменную при загрузке страниц в скрипте содержимого, вроде переменной stati c?

.

var modify = true;

//initial read
chrome.storage.local.get("modifySetting",
     function(data)
     {
        console.log("Read value from storage");
        if("modifySetting" in data)
        {
            modifySetting = data["modifySetting"];
        }
     }
);

... lots of functions and variables ...

console.log("Using the value.");
if(modify)
{
    doModification();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...