google-chrome-extension - 如何使异步函数返回布尔值而不是承诺
问题描述
我正在尝试popup.html
在我的 chrome 扩展中提取文件中复选框的布尔值。我有这个:
var highlightedCheckBoxVal = $("#highlightedCheckbox").prop("checked");
function getAsync(valueToGet) {
return new Promise((resolve) => {
chrome.storage.sync.get(valueToGet, (value) => {
resolve(value);
console.log("resolved");
})
})
}
//returns object - I want it to return true or false
$(document).keyup(async function (e) {
if (e.keyCode == 120) {
getAsync("highlightedCheckBoxVal").then(val => {
console.log(val);
});
}
});
控制台返回一个对象,我希望它返回一个布尔值。我认为这是因为getAsync
正在返回一个承诺,但我怎样才能使这个承诺成为一个布尔值?
我也尝试过记录val.valueOf()
。
解决方案
正如我们在文档中看到的,回调接收一个包含所有请求的键的对象(您可以请求一个字符串数组),因此解决方案是将键提取为result[key]
.
function getAsync(key) {
return new Promise((resolve) => {
chrome.storage.sync.get(key, (data) => resolve(data[key]));
});
}
推荐阅读
- flutter - Flutter 平台特定的导航方法
- javascript - 如何使用 new Date() 获取 DD-MM-YY hh:mm a, en-US, +0100 格式
- postgresql - 数据库初始化发生在 docker-compose 中其他服务的启动之后
- python - 实现我制作成视频的 CNN+LSTM 模型时遇到问题
- c# - 有没有办法反序列化为 ExpandoObject 并在之后进行强类型化
- python - 如何隐藏 print() 或在某些情况下不执行
- android - React Native:错误无法安装应用程序。确保您已设置 Android 开发环境
- python - 我的 django 应用程序中的链式字段是空的。我正在使用 django 智能选择
- css - "display:inline-block" 显示不同于 "display:inline flow-root"
- android - 撰写中的条件导航,无需单击