You cannot return data generated by the async function, such as chrome.storage.local.get , because it is more likely that your function will complete execution before executing the async function. This is why your function returns undefined , which is the default returnData .
A good alternative would be to make your function asynchronously using a callback function.
$scope.storageGet = function(param, callback) { chrome.storage.local.get(param.storageName, function(data) { callback(data); }); };
Now you can call your function as follows:
$scope.storageGet(param, function(returnData) {
source share