Здравствуйте, пишу расширение для хрома.
Задача подразумевает по определенным событиям посылать запросы на "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;
})