- Nogs,
Bonjour, je suis en train de découvrir l’écosystème Javascript et dans mon petit scraper, le Array "articleArray" reste de longueur 1 (le dernier élément ajouté écrase le précédent). Lorsque je le déclare en global, il se comporte correctement, pouvez vous m’indiquer pourquoi ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | var promiseRequestForArticles = function(articlesLinks){ return new Promise(function(resolve, reject) { let articleArray = new Array(); for (j=0; j<articlesLinks.length; j++){ $.ajax( { url: articlesLinks[j], dataType: 'html', data: '', success : function(response) { var contentDiv = $(response).find('#content'); var article = { images: contentDiv.first("div.body").text() }; articleArray.push(article); } }); } console.log(articleArray.length) resolve(articleArray) }) } function parseContent(){ for (n=0; n<articlesLinksTags.length; n++){ articleList = new Array(); promiseRequestForArticles(articlesLinks.slice(2, 3)).then(function(value) { articleList.push(value); }); } return articleList } var jj = parseContent(); ` |
J’ai pourtant lu attentivement la doc au sujet de let, et celle ci précise bien que son scope se situe dans le bloc courant, pourquoi donc diable ce comportement ? Je sors bien de la boucle avant mon resolve !
Votre aide est la bienvenue.
+0
-0