无法从 chrome.storage 获取数组
Unable to get array from chrome.storage
每当我尝试从 chrome.storage
获取数据时,它 returns undefined
.
chrome.storage.sync.get('courses', function(result) {
currentCourses = result.courses
console.log(currentCourses)
currentCourses.push(coursename)
chrome.storage.sync.set({courses: currentCourses}, function() {
alert(`Course "${coursename}" has been added !`)
});
}
userCourses = async () => {
await chrome.storage.sync.get('courses', function(result) {
return(result.courses)
});
}
courseData = userCourses()
console.log(courseData)
我找到了关于堆栈溢出的答案 here,但它给出了同样的错误。我是 JS 的新手,对 Promises 不太满意。
我尝试了官方文档中的example,但它也给出了如下相同的错误。
有人可以帮我解决问题,或者修改我的代码吗?
您将 chrome.storage.sync.get()
与完成回调一起使用。但请注意,您使用 .get()
方法检索的数据不可用,除非在回调中。
chrome.storage.sync.get(['key'], function(result) {
console.log('Value currently is ' + result.key);
});
是文档中的示例。它是一个函数的调用。但该功能始终且必然 returns undefined
.
请注意 .get()
的第一个参数是一个 键数组 。您的代码缺少数组。
第二个参数是回调函数。看起来像这样:
function (result) {
}
在函数中 result.key
是您请求的密钥,result.value
是您存储在密钥中的任何内容。您正在查看未定义的 result.courses
。
控制流程。
- 对
.get()
的调用总是立即完成。
- 稍后调用回调。
将对存储的调用包装在一个承诺中并等待它:
function getStorageValuePromise(key) {
return new Promise((resolve) => {
chrome.storage.sync.get(key, resolve);
});
}
await getStorageValuePromise('val');
每当我尝试从 chrome.storage
获取数据时,它 returns undefined
.
chrome.storage.sync.get('courses', function(result) {
currentCourses = result.courses
console.log(currentCourses)
currentCourses.push(coursename)
chrome.storage.sync.set({courses: currentCourses}, function() {
alert(`Course "${coursename}" has been added !`)
});
}
userCourses = async () => {
await chrome.storage.sync.get('courses', function(result) {
return(result.courses)
});
}
courseData = userCourses()
console.log(courseData)
我找到了关于堆栈溢出的答案 here,但它给出了同样的错误。我是 JS 的新手,对 Promises 不太满意。
我尝试了官方文档中的example,但它也给出了如下相同的错误。
有人可以帮我解决问题,或者修改我的代码吗?
您将 chrome.storage.sync.get()
与完成回调一起使用。但请注意,您使用 .get()
方法检索的数据不可用,除非在回调中。
chrome.storage.sync.get(['key'], function(result) {
console.log('Value currently is ' + result.key);
});
是文档中的示例。它是一个函数的调用。但该功能始终且必然 returns undefined
.
请注意 .get()
的第一个参数是一个 键数组 。您的代码缺少数组。
第二个参数是回调函数。看起来像这样:
function (result) {
}
在函数中 result.key
是您请求的密钥,result.value
是您存储在密钥中的任何内容。您正在查看未定义的 result.courses
。
控制流程。
- 对
.get()
的调用总是立即完成。 - 稍后调用回调。
将对存储的调用包装在一个承诺中并等待它:
function getStorageValuePromise(key) {
return new Promise((resolve) => {
chrome.storage.sync.get(key, resolve);
});
}
await getStorageValuePromise('val');