В одном из фоновых файлов моего расширения chrome я проверяю файлы cookie и сталкивается с проблемой. В моей функции chrome.cookies.get({"url": domain, "name": name},function(cookie) {});
Я могу получить объект cookie и передать его в последний параметр (анонимную функцию) в качестве переменной cookie и получить доступ к его значению с помощью cookie.value.Не удается передать аргумент родительской функции дочерней анонимной функции
Проблема заключается в том, что я могу только отправить ответ возврата от родительской функции, а не вложенную анонимную функцию из вызова chrome.cookies.get
.
В моем примере ниже я могу вернуть ответ (проверено с предупреждением на другой странице) с значению1 но value2 никогда не возвращаются ... После того, как делать много читать, я думаю, что я сузил проблема с ошибкой определения области охвата ... Под этим я подразумеваю ответный ответ sendResponse (параметр в родительской функции) не получает доступ к вложенной анонимной функции.
function getCookies(request, sender, sendResponse, domain, name) {
chrome.cookies.get({"url": domain, "name": name}, function(cookie) {
sendResponse({"myvar":"value2"}); //DOES NOT WORK
if(cookie){
anotherFunction(cookie.value);
}else{
anotherFunction("0");
}
});
sendResponse({"myvar":"value1"}); // WORKS
}
Так в основном, мне просто нужно выяснить, какой способ подтолкнуть мой SendResponse параметр вплоть до анонимной функции; или воссоздать аналогичный метод, который не вызвал бы эту проблему. Любая помощь или руководство в этом вопросе будет с большой благодарностью. Заранее благодарю за ваше время.
Я пробовал это раньше, и даже когда я добавил параметр var varResponse = arguments [1]; ', который вы предложили ** значение2 ** по-прежнему не возвращается через sendResponse. –
См. Редактирование. Я забыл, что метод, вызывающий обратный вызов, не будет знать о втором аргументе. Сделать его глобальным должно работать. Также вы попробовали его с удалением кода value1? – chiliNUT
Я попробовал вашу обновленную версию и не получил ответа от sendResponse. Мне нравится ваша идея использовать глобальное; вы думаете, что это может что-то сделать, потому что это работает в ** фоновом скрипте ** моего расширения chrome? Я считаю, что это означает, что он работает в контексте самого моего расширения, а не страницы окна ... Кроме того, на самом деле выполняется проверка кода проверки. Я периодически комментировал строку отправки * value1 *. –