Расширение Chrome / cookie / ожидают функции обратного вызова - PullRequest
0 голосов
/ 27 сентября 2019

Привет, я прошу прощения за этот вопрос, я провел много исследований, но я не могу решить эту проблему, я не могу получить значение моего cookie, я думаю, это потому, что моя функция имеет обратный вызов, (я получаюзначение после моего кода), но я не знаю, как это исправить: /

const cookieUrl = 'http://urlCookie'
const cookieName = 'CookieName'

cookieValue = checkCookie(cookieUrl,cookieName)
console.log('cookieValue: ', cookieValue)

function checkCookie(url, name){
    chrome.cookies.get({
        url: url,
        name: name
    },
    function (cookie) {
        if (cookie) {
        console.log(cookie.value)
        return cookie.value
        }
        else {
        console.log('Can\'t get cookie! Check the name!')
        return 0
        }
    })
}

Ответы [ 3 ]

0 голосов
/ 27 сентября 2019

Большинство API Chrome не возвращали обещание, когда мы их вызываем, мы должны предоставить ему обратный вызов для обработки ответа.Таким образом, в этом случае мы могли бы добавить обещание и разрешить его внутри обратного вызова, чтобы у нас был сигнал , когда chrome вызывает обратный вызов.

const cookieUrl = 'http://urlCookie'
const cookieName = 'CookieName'

cookieValue = checkCookie(cookieUrl,cookieName)
    .then((cookie) => console.log(cookie))
    .catch(function(error) {console.log(error)});

function checkCookie(url, name){
    return new Promise((resolve, reject) => {
        chrome.cookies.get({
            url: url,
            name: name
        },
        function (cookie) {
            if (cookie) {
                console.log(cookie.value)
                resolve(cookie.value)
            }
            else {
                console.log('Can\'t get cookie! Check the name!')
                reject(0);
            }
        })
    });
}
0 голосов
/ 27 сентября 2019

Спасибо, ребята, мой последний код:

const myFunction = async () => {
    try {
        let cookieValue = await checkCookie(cookieUrl,cookieName)
        console.log('cookie is present',cookieValue )

    }
    catch (err) {
        console.log(err)
    }
} 
function checkCookie(url, name){
    return new Promise((resolve, reject) => {
        chrome.cookies.get({
            url: url,
            name: name
        },
        function (cookie) {
            if (cookie) {
                console.log('cookieValue',cookie.value)
                resolve(cookie.value)
            }
            else {
                reject('Can\'t get cookie! Check the name!')
            }
        })
    });
}

myFunction()

0 голосов
/ 27 сентября 2019
// assuming chrome.cookies.get
function checkCookie(url, name) {
  return chrome.cookies.get({url, name}, cookie => cookie);
}
var cookie = checkCookie(url, name)

Я не очень знаком с chrome.cookies.get, и поэтому не знаю, как это проверить, но любая рациональная функция, использующая обратные вызовы, будет возвращать значение обратного вызова.

Кроме того, вы могли бы обернуть его в обещание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...