Я хочу загружать несколько 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
....