如何使异步函数返回布尔值而不是承诺

时间:2020-03-12 13:33:38

标签: google-chrome-extension

我正在尝试在chrome扩展程序的popup.html文件中提取复选框的布尔值。我有这个:

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()

1 个答案:

答案 0 :(得分:1)

我们在documentation中看到,回调函数收到一个包含所有请求键的对象(您可以请求一个字符串数组),因此解决方案是将键提取为result[key]

function getAsync(key) {
  return new Promise((resolve) => {
    chrome.storage.sync.get(key, (data) => resolve(data[key]));
  });
}