Javascript 当调用方法时,它返回空数组
我正在使用VueJS开发一个Chrome扩展。我使用Javascript 当调用方法时,它返回空数组,javascript,vue.js,google-chrome-extension,Javascript,Vue.js,Google Chrome Extension,我正在使用VueJS开发一个Chrome扩展。我使用chrome.storage.sync存储了一些数据,我想在迭代之前检索它 这是我用来获取数据的方法的代码 getSpeedDials(){ 让speedDials=[] chrome.storage.sync.get('speedDials',函数(值){ if(value.hasOwnProperty('speedDials')){ console.log(value.speedDials) speedDials=value.speedDi
chrome.storage.sync
存储了一些数据,我想在迭代之前检索它
这是我用来获取数据的方法的代码
getSpeedDials(){
让speedDials=[]
chrome.storage.sync.get('speedDials',函数(值){
if(value.hasOwnProperty('speedDials')){
console.log(value.speedDials)
speedDials=value.speedDials
}
});
返回速度刻度盘
}
console.log(value.speedDials)
输出预期结果,一个包含多个对象的数组。但是返回的是一个空数组。如何调试此功能?从getSpeedDials函数返回承诺
getSpeedDials() {
return new Promise((resolve,reject) => {
let speedDials = []
chrome.storage.sync.get('speedDials', function(value) {
if (value.hasOwnProperty('speedDials')) {
console.log(value.speedDials)
speedDials = value.speedDials;
return resolve(speedDials);
}
return resolve();
// you can reject promise if you want to treat this as an error.
});
})
}
chrome.storage.sync.get
是异步的。在从存储中加载值之前,返回初始空数组
您可以返回一个承诺,该承诺在完成时与结果一致
async getSpeedDials() {
return new Promise(resolve => {
chrome.storage.sync.get('speedDials', result => {
resolve(result);
});
}
}
请注意,在执行此操作时,获取值的方式也应该有所不同
在async
函数中,我们可以使用wait
获取值:
let speedDials = await getSpeedDials();
如果没有:
let speedDials = [];
getSpeedDials().then(dials => {
speedDials = dials
});
// Note that when doing this, everything under this function will be executed before speedDials has any entries.
// To prevent this, make your function async, and use the aforementioned method (await)
如果您有任何问题,请告诉我我不知道这个Chrome API,但我猜它是异步的。如果您在返回speedDials之前记录它,我猜您会在
get
中看到它在日志之前被记录