我遇到了一个问题,因为 chrome api 函数是异步的,我无法获得它的返回值。考虑以下代码。 我正在使用 angularjs
$scope.storageGet = function(param) {
var returnData;
chrome.storage.local.get(param.storageName, function(data) {
returnData = data;
});
return returnData;
};
当我尝试这样调用它时:
console.log($scope.storageGet({'storageName': 'users'}));
它在控制台打印'undefined'。我想看到的是存储在 chrome 存储中的用户对象。好吧,我确定我在 Chrome 存储中有数据。
最佳答案
您不能返回由 chrome.storage.local.get
等异步函数生成的数据,因为您的函数更有可能在异步函数执行之前完成执行。这就是您的函数返回 undefined
的原因,这是 returnData
的默认值。
一个很好的替代方法是使用回调函数使您的函数也异步。
$scope.storageGet = function(param, callback) {
chrome.storage.local.get(param.storageName, function(data) {
callback(data);
});
};
现在你可以这样调用你的函数了:
$scope.storageGet(param, function(returnData) {
// do something with returnData
});
关于javascript - 获取函数内部异步函数的返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25301382/