Как обычно, у меня есть Googled это честный бит и читать в API передачи сообщений, но, опять же, мне пришлось прибегать к хорошим ребятам в StackOverflow.Задерживать скрипт до тех пор, пока все сообщения не будут отправлены?
Мой вопрос заключается в следующем: при передаче сообщений между фоновой страницей расширения и расширением содержимого Google Chrome существует ли способ сделать его асинхронным - то есть задержать JavaScript до тех пор, пока сообщения не будут обнаружены как успешно переданные?
У меня есть функция сразу после того, как функция передачи сообщений использует данные localStorage
, которые передаются. При первых запусках сценарий всегда приводит к ошибке, поскольку данные не проходят достаточно быстро.
В настоящее время я обхожу это с setTimeout(nextFunction, 250);
, но это вряд ли является изящным или практичным решением, так как количество и размер передаваемых значений всегда меняются, и я не знаю, как долго он должен пройти значения. Кроме того, я бы предположил, что время прохождения относительно версии браузера и системы пользователя.
Одним словом, I необходимо это динамическое.
я рассмотрел что-то вроде
function passMessages(){
chrome.extension.sendRequest({method: "methodName"}, function(response) {
localStorage["lsName"] = response.data;
});
checkPassedMessages();
}
function checkPassedMessages(){
if (!localStorage["lsName"]){
setTimeout(checkPassedMessages, 100); //Recheck until data exists
} else {
continueOn();
}
}
, но мне нужно пройти довольно много данных (по крайней мере, 20 значений) и, честно говоря, это не практично !localStorage["lsName1"] && !localStorage["lsName2"]
и т.д. и т.п. Кроме того, я даже не знаете, будет ли это работать или нет.
У кого-нибудь есть идеи?
Благодаря
Update: Еще нет ответа, к несчастью. Может ли кто-нибудь предложить какую-либо помощь? :/
Какое расширение вы пытаетесь создать? Это действие браузера? Говоря «справочная страница расширения Google Chrome», вы имеете в виду фоновая страница html, которую вы включаете в раздел 'background.page' файла' manifest.json'? Вы пытаетесь отправить данные с фоновой страницы на сценарий содержимого или наоборот? –
Я пытаюсь отправить данные из фоновой страницы в сценарий содержимого. – mythofechelon
Кроме того, да, фоновая страница - это HTML-файл, содержащийся в файле manifest.json. – mythofechelon