Расширение Chrome: как асинхронно загружать несколько URL-адресов веб-страниц и делать что-то между - PullRequest
0 голосов
/ 19 апреля 2019

Я хочу загружать несколько URL-адресов один за другим асинхронно и что-то делать между ними.Я пытаюсь использовать Promise, но он не работает.Обещание не ждет решения.

Я много чего перепробовал, вдохновленный https://developers.google.com/web/fundamentals/primers/promises

Я потратил более 10 часов на это дело ... Если кто-то может мне помочь:) Буду любить ее или его!

Будь снисходительным, я новичок в Javascript:).

// This script is in my background.js (Execute in background extension).

//function for wait
var sleep = function (ms, callback) {
    if (ms == null) {
        return;
    }
    setTimeout(function () {
        console.log("sleep:fin");
        if (typeof callback === "function" )
            callback();
    }, ms);
}


async function parseUrls(tab,urls) {
//function to parse URL
    var RP = function rechProp(url,index) {
            //Use Promise to wait the resolve
            return new Promise (function(resolve){
                console.log("Start "+index);
                //load the web page  with the URL in the Chrome Tab
                chrome.tabs.update(tab, {url:url});
                console.log("page is loading "+index);
                sleep(1000, function () {
                    //We wait 1sec just to be sure the page is loading
                    console.log("After sleep "+index);
                    chrome.webNavigation.onCommitted.addListener(function onCommitted2 () {
                            // we wait page is on Commited
                            console.log("page commited "+index);
                            chrome.webNavigation.onCommitted.removeListener(onCommitted2);
                            chrome.webNavigation.onCompleted.addListener(function onCompleted2() {
                                // we wait page is on completely Loaded 
                                console.log("page completed "+index);
                                chrome.webNavigation.onCompleted.removeListener(onCompleted2);
                                do_something();
                                resolve();
                                //we except that promise wait for it...
                            });
                    });
                });
            });


        };
       // parse each URL with RP    
       urls.map(RP);

}

Логи:

Start 0
page is loading 0
Start 1
page is loading 1
Start 2
page is loading 2
After sleep 0
After sleep 1
After sleep 2
page commited 0
page commited 1
page commited 2
page completed 0
page completed 1
page completed 2
...

TheОжидаемые журналы:

Start 0
After sleep 0
page commited 0
page is loading 0
page completed 0
Start 1
page is loading 1
After sleep 1
page commited 1
page completed 1
Start 2
page is loading 2
page commited 2
page completed 2
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...