chrome.storage вопрос про callback'и
Обычное дело. Пишу расширение для Хрома, однако до этого на JS ничего не писал. Поэтому сталкиваюсь с особенностями языка.
Использую хромовское хранилище, а API хрома работает асинхронно, в следствии чего алерт срабатывает ещё до того, как в переменную запишется значение (Если я правильно всё понимаю). Нужно запихнуть значение этой структуры в переменную, что бы дальше с ней работать:
var valueStorage
function getStorage() {
chrome.storage.local.get(['key'], function(result) {
console.log('Value currently is ' + result.key);
valueStorage = result.key;
});
}
getStorage();
alert (valueStorage);
Вроде бы почитал про кэллбеки. И посмотрел на похожие проблемы. Всё таки вопрос заезженный. Но видимо мой мозг пэхапэшника отказывается воспринимать происходящее и я не могу никак подставить примеры под свою ситуацию. Ну ткните носом, пожалуйста, как правильно обернуть, что бы выполнилось всё последовательно. Что б алерт сработал уже после записи в переменную. И что б дальше в коде я мог спокойно использовать эту переменную вне всяких функций. |
Цитата:
chrome.storage.local.get(['key'], function(result) {
console.log('Value currently is ' + result.key);
var valueStorage = result.key;
alert(valueStorage);
//do something else
});
|
Спасибо за ответ. Да, сделал, работает. Думаю, это именно то, что мне нужно. Всё это странно, но с более изящными способами пока не хочу даже заморачиваться.
|
>Вне всяких функций
Вот об этом забудь в js. Тут исполнение перетекает из функции в функцию из метода в метод. Даже если обернуть в промис и заюзать await - всё равно придётся код обернуть в async функцию. |
| Часовой пояс GMT +3, время: 22:14. |