Проблема в том, что ваш обратный вызов называется после , когда возвращается основная функция.(API расширения называются асинхронными по причине!) returnVal
не определено, потому что еще не было назначено.Попробуйте изменить свою функцию так, чтобы она принимала аргумент обратного вызова:
function getCookie (cookieName, callback){
chrome.cookies.get({
'url':'https://addictedtogether.com/',
'name':cookieName
},
function(data){
callback(data);
});
}
// Use like this:
getCookie("CookieName", function(cookieData){
// Do something with cookieData
});
Если вам не нравится передавать обратные вызовы, вы также можете изменить свою функцию, чтобы она возвращала отложенный.Если вам приходится обрабатывать много асинхронных вызовов функций, отсрочки значительно облегчают вашу жизнь.Вот пример использования jQuery.Deferred:
function getCookie (cookieName){
var defer = new jQuery.Deferred();
chrome.cookies.get({
'url':'https://addictedtogether.com/',
'name':cookieName
},
function(data){
defer.resolve(data);
});
return defer.promise();
}
// Example use:
getCookie("FooBar").done(function(data){
// Do something with data
});