PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как получить значение из асинхронной функции?

Здравствуйте, пишу расширение для хрома.
Задача подразумевает по определенным событиям посылать запросы на "3ий сервер" и показывать ответы, запросы эти требуют ключ доступа, который хранится в браузере.

Не могу понять как разрулить с асинхронностью, API хрома говорит что функция должна быть синхронная, те в async обвернуть не могу, но мне надо сперва получить токен getToken (await тоже не могу поставить, then же отрабатывает позже чем надо)?

import {HttpService} from '../../services/HttpService';

const BACKEND = 'http://localhost:8080/';

chrome.runtime.onMessage.addListener((message, sender, callback) => {

//код с ошибкой, я знаю
  const tokenResponse = await getToken(); // внутри  return chrome.storage.local.get('token').then((data) => {return data.token ?? '';});
  token = tokenResponse.token; 
  const http = new HttpService(token, BACKEND); // сюда не приходит токен, тк данный код выполняется раньше получения токена

  switch (message.action) {
    case 'get-task': {
      http.getNewTask().then((response) => {
        callback(response);
      });
      break;
    }
    case 'confirm-task': {
      http.putConfirmTask(message.id).then((response) => {
        callback(response);
      });
      break;
    }
}
return true;
})
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы