Я чувствую себя глупо, потому что некоторое время пытался получить доступ к этой переменной ответа, и я думаю, что я недостаточно понимаю закрытие или область видимости, поэтому, пожалуйста, помогите.Невозможно получить доступ к переменной ответа от chrome.runtime.sendMessage. (Закрытие?)
Я работаю над расширением chrome, и я отправляю сообщение from contentscript.js на background.js и получаю ответ. Теперь я хочу вернуть ответ и использовать его в contentcript.js. Похоже, то, что вы должны быть в состоянии сделать ...
function getWords(){
var words = [];
chrome.runtime.sendMessage({detail: "words"}, function(response) {
console.log(response) // prints ["word1, "word2" ..]
words = response;
});
return words; // = []
}
UPDATE: Спасибо, я понимаю, что мой вопрос сейчас, но все же хотел бы несколько советов, чтобы решить эту проблему. Мой вопрос - это лучший способ «спросить» справочную страницу для списка слов, если мне это нужно как параметр в другой функции. Могу ли я ждать возвращения информации? Должен ли я просто вызвать эту функцию из обратного вызова? или есть какой-то другой метод? В идеале я хотел бы фактически реализовать getWords(), который не возвращается, пока список не вернется ... Невозможно? Я открыт для библиотек с открытым исходным кодом.
См [Асинхронный против синхронных метод] (https://developer.chrome.com/extensions/overview.html#sync) в документации расширения Chrome. Скажите мне, когда вы все еще не понимаете концепцию после прочтения этого, я укажу вам на другой пример. –