Как заставить функцию asyn c возвращать логическое значение, а не обещание - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь установить логическое значение флажка в моем файле 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().

1 Ответ

1 голос
/ 12 марта 2020

Как мы видим из документации , обратный вызов получает объект, который содержит все запрошенные ключи (вы можете запросить массив строк), поэтому решение состоит в том, чтобы извлечь ключ как result[key]. * 1004. *

function getAsync(key) {
  return new Promise((resolve) => {
    chrome.storage.sync.get(key, (data) => resolve(data[key]));
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...