我遇到问题,因为 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'}));
它在控制台中打印“未定义”。我想看到的是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
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)