Извлечение значения из локального хранилища Chrome без присвоения значения локальной переменной - PullRequest
0 голосов
/ 13 октября 2018

Я создаю расширение Chrome с помощью React.Во время входа в систему я сохраняю имя пользователя, и для какой-то другой операции мне нужно извлечь его из файла background.js, содержимое которого ниже:

/* globals chrome */

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        let username;
        if (request.data.type == "SENDTRANSACTION") {
            chrome.storage.sync.get(['username'], (response) => {
                    console.log(response.username)
                    username = response.username // This is not being set on first invocation
            });
            console.log(username);
            sendResponse({message: "Sent values to Server"});
        }
    });

Значение username равно undefined.Я что-то упустил?

1 Ответ

0 голосов
/ 14 октября 2018

Попробуйте:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    let username;
    if (request.data.type == "SENDTRANSACTION") {
        chrome.storage.sync.get(['username'], (response)=>{
            username = response.username
            // This is not being set on first invocation

            console.log(username);
            sendResponse({
                message: "Sent values to Server"
            });
        });
        return true;
    }
});

chrome.storage.sync.get требуется время для загрузки данных из хранилища, поэтому sendResponse перед выполнением обратного вызова (установите username = response.username)

Проверьте runtime # event-onMessage

Эта функция становится недействительной при возврате прослушивателя событий, , если вы не вернете true из прослушивателя событий, чтобы указать, что вы хотите отправить ответ асинхронно

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