Как использовать функцию asyn c с парами ключ-значение Google Chrome Extension? - PullRequest
0 голосов
/ 20 июня 2020

Внутри функции у меня есть функция asyn c, которая инициализирует переменные (defineVariables) путем вызова другой функции asyn c с именем getLocalStorageValue, которая возвращает обещание. Когда функция defineVariables завершает установку всех переменных, она вызывает другую функцию с именем response, которая предупреждает startTimeHour.value и endTimeHour.value. Однако значения не определены. Что делать?

Код:

chrome.webNavigation.onDOMContentLoaded.addListener(function() {
    let startTimeHour;
    let endTimeHour;
    let startTimeMin;
    let endTimeMin;

    defineVariables();

    async function defineVariables(){
        startTimeHour = await getLocalStorageValue("startTimeHour");
        endTimeHour = await getLocalStorageValue("endTimeHour");
        startTimeMin = await getLocalStorageValue("startTimeMin");
        endTimeMin = await getLocalStorageValue("endTimeMin");
        response();
    }
    function response(){
      if(startTimeHour != null && endTimeHour != null){
        alert(startTimeHour)
        alert(endTimeHour)
      }else{
        alert("could not get values")
      }

    chrome.tabs.query({active:true,currentWindow:true},(tabs)=>{
      chrome.tabs.sendMessage(tabs[0].id,'execoverlay',(resp)=>{
         console.log(resp.msg)
      })
    })
  }
    
}, {url: [{urlMatches : 'https://mail.google.com/'}]});

async function getLocalStorageValue(key) {
  return new Promise((resolve, reject) => {
      try {
          chrome.storage.sync.get(key, function (value) {
              resolve(value);
          })
      }
      catch (ex) {
          reject(ex);
      }
  });
}

1 Ответ

0 голосов
/ 20 июня 2020

Попробуйте использовать

return response()

, чтобы он запускался после установки всех переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...