Как использовать chrome.cookies.getAll асинхронно? - PullRequest
0 голосов
/ 18 февраля 2019

Я попытался изменить свой код, чтобы он выглядел примерно так: ответ .

Здравствуйте, мой код, похоже, возвращает пустой массив при попытке использоватьchrome.cookies.getAll асинхронно.Возможно, я неправильно его использую или что url не проходит.

chrome.history.onVisited.addListener(function(HistoryItem) {
    var cookies = {
        start: function(callback) {
            this.logCookies(HistoryItem.url,callback);
        },
        logCookies: function(url,callback) {
            chrome.cookies.getAll({
                'url': url
            }, function(cookie) {
                console.log(cookie) //log the cookie
            });
        }
    }
    cookies.start(function() {
        console.log('getting cookies...')
    });
});

Надеюсь, это не слишком расплывчато ... что я пытаюсь сделатьэто получить все куки с посещенного в настоящее время веб-сайта и зарегистрировать их. (Я надеюсь удалить их в будущем, но сейчас я хотел бы регистрировать каждый найденный файл cookie) .Вместо этого он возвращает пустой массив длиной 0, а getting cookies... не отображается в консоли.Я не уверен, что я сделал не так, мне кажется, что я все сделал правильно.Я новичок в асинхронном кодировании, поэтому небольшая помощь будет оценена.Спасибо!

1 Ответ

0 голосов
/ 18 февраля 2019

Я нашел проблему!Оказывается, у меня не было необходимых прав доступа в манифесте, и я настроил код для использования Promises, и он работает совершенно нормально!Я получил его, чтобы удалить все куки тоже.

chrome.history.onVisited.addListener(function(HistoryItem) {
    var cookies = {

        start: function() {
            return this.logCookies();
        },

        logCookies: function() {

            return new Promise(function(resolve,reject){

                function remove(cookies){
                    for (var i = 0; i < cookies.length; i++) {
                        chrome.cookies.remove({url: HistoryItem.url + cookies[i].path, name: cookies[i].name},function(){
                            console.log('cookie removed!')
                        });
                    }
                    resolve()
                }

                chrome.cookies.getAll({
                    'url': HistoryItem.url
                }, function(cookies) {
                    remove(cookies)
                });

            })
        }
    }

    cookies.start().then(function(){
        console.log('removing cookies...')
    });

});

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