Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 95

Работа с асинхронным chrome.storage.local.get

12.12.2017, 13:03. Показов 5626. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
практикуюсь в создании расширения для google chrome

есть код для popup.js:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
chrome.storage.local.set({"value1": "2"});
 
var vCheck;
vCheck = "1";
 
async function f1()
{
    await chrome.storage.local.get("value1", function(result)
    {
        vCheck += result['value1'];
    });
}
 
f1();
vCheck += "3";
console.log(vCheck);
в задумке должен быть выведен результат "123", но выводит "13"
подскажите, как добиться нужного результата?


код manifest:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
    "name":  "test", 
    "version": "0.1",  
    "description": "test",
    "manifest_version": 2, 
    "icons":
    {
        "128": "128.png"
    },
 
    "options_page": "options.html",
 
    "browser_action":
    {
        "default_title": "test",
        "default_icon": "128.png", 
        "default_popup": "popup.html" 
    },
 
    "permissions": 
    [
        "storage",
        "notifications"
    ],
 
    "background": 
    {
        "scripts": ["background.js"], 
        "persistent": false
    },
 
    "content_scripts": 
    [
        {
            "matches": [ "http://*/*","https://*/*" ],
            "js": [ "popup.js" ],
            "css": [ "main.css" ],
            "run_at": "document_end"
        }
    ]
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2017, 13:03
Ответы с готовыми решениями:

Local storage
Данный код работает правильно и при перезагрузке фоновый цвет остается. window.onload = function (){ if (localStorage.getItem...

Работа с асинхронным кодом без использования Promise и async/await
Привет. Я новичок в JS, поэтому вопрос может быть довольно простой, но к сожалению нагуглить нужный ответ не получилось. Итак есть две...

Local storage
Доброго времени суток. Недавно появился реквест относительно меню моего сайта. Суть такова: имеется индекс страничка с 2-мя фреймами - меню...

6
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
12.12.2017, 20:50
SevSeverial, У вас функция асинхронная, она становится в конец очереди на исполнение.
1
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 95
13.12.2017, 03:53  [ТС]
salesman, спс за ответ
Я с этой проблемой и обратился сюда
Как мне "синхронизировать" её выполнение
Я даже здесь указал что я использовал для этого, не добившись результата
Подскажите, если у вас есть мысли по поводу решения
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
13.12.2017, 06:35
SevSeverial, Сам принцип асинхронности заключается в том, что браузер не ожидает готовности функции, и как только она сигнализирует о своей готовности, она становится в конец очереди на исполнение. И если вы делаете асинхронную функцию, то она должна быть самодостаточной, и не зависеть от "внешнего" кода. Т.е. все что вы хотите сделать, все должно быть внутри функции. Вам следует поменять общую логику. По другому никак.
2
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 95
13.12.2017, 06:43  [ТС]
salesman, спс за ответ
есть ли другой способ хранить данные переменных на локальном носителе?
вроде, есть localstorage (html5) и cookie
на сколько актуальны механизмы для построения моей задачи (получить последовательный вывод данных, уйдя от асинхронности) или есть что-то поудачнее?
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,834
13.12.2017, 06:57
SevSeverial, Я не очень понимаю, в чем заключается ваша задача и что вы пытаетесь сделать)
localstorage как и cookie хранится в браузере, единственное отличие, что localstorage не гоняется в заголовках, при каждом запросе, т.е. эти данные не доступны на сервере, в отличие от cookie.

Добавлено через 9 минут
SevSeverial, А отличие chrome.storage.local от localstorage заключается в том, что localstorage привязан к домену, и хранит данные для конкретного домена. А chrome.storage.local хранит данные в целом, для браузера. Все зависит от задачи.
2
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 95
13.12.2017, 07:11  [ТС]
salesman, спс за ответ
простая задача
получить последовательность выводом (типа цифр 1, 2 и потом 3) - это просто пример возможной задачи, упрощенный для понимания

value1 = "2";
vCheck = "1";
vCheck += value1';
vCheck += "3";

так вот
переменную value1 нужно где-то хранить, где-то на клиенте пользователя
что можно использовать? (chrome.storage.local.get, я так понимаю, не подходит для моей задачи)

Цитата Сообщение от sad67man Посмотреть сообщение
единственное отличие, что localstorage не гоняется в заголовках, при каждом запросе, т.е. эти данные не доступны на сервере, в отличие от cookie.
а можете поподробнее или статейку почитать кинуть?
Цитата Сообщение от sad67man Посмотреть сообщение
А chrome.storage.local хранит данные в целом, для браузера.
вот мне это, наверно, и нужно...

Добавлено через 12 минут
>>Я не очень понимаю, в чем заключается ваша задача и что вы пытаетесь сделать)
Может не углядели - делаю расширение для Google Chrome
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2017, 07:11
Помогаю со студенческими работами здесь

Local Storage
Пример: есть интернет-магазин, без регистрации. Добавляем товары в корзину. Смотрим в веб-консили - сессий нет, куи нет. Есть только Local...

Thread Local Storage
Всем доброго времени суток! Интересно, кто-нибудь применял TLS в жизни? Мне хотелось бы узнать в какой ситуации и какие преимущества это...

Хранение записей в local storage
Добрый день! Подскадите пожалуйста. Как применить local storage в данном случае? index.html <!DOCTYPE html> <html...

Перенос данных из Thread Local storage
Добрый вечер. Допустим в одной c++ библиотеке (Func1(...), Func2(...)) используется TLS. В Func1(...) TLS устанавливается, в...

Сохранение состояния чекбоксов в Local Storage
Помогите решить проблему . Нужно записать данные в Local Storage по отмеченным чекбоксам. $(document).on('turbolinks:load', function()...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru