Задать вопрос
@Senseich

Почему сообщения в консоль выводятся не по порядку массива?

Подскажите в чем, может быть проблема.

Имеется массив, допустим:

arr = [1, 2, 3, 4, 5];

Использую такой скрипт для перебора массива и вывода полученного текста с другого сайта в консоли.

for(let i = 0; i < arr.length; i++){  
  
  var link = 'http://195.112.117.82:5080/photo?tov_code_internet=' + arr[i];
  
        $.get(link, function(data) {

            var $obj = $(data);

            var content = $obj[19].innerHTML;
            var title =   $obj[7].innerText;

            var text = content.replace (/[\n\r]/g, ' ').replace (/\s{2,}/g, ' ');

            console.log(text + " " + title);

             }
          )
}


Но в консоль местами текст выводится не в том порядке как в массиве, т.е. идет
текст - 1
текст - 3
текст - 2
текст - 5
текст - 4

Как этого избежать, чтобы порядок соблюдался и выводился как в массиве?
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Promise.all(arr.map(p => {
    const link = `http://195.112.117.82:5080/photo?tov_code_internet=${encodeURIComponent(p)}`;
    return new Promise(resolve => {
        $.get(link, resolve);
    });
})).then(dataArr => {
    for (const data of dataArr) {
        const $obj = $(data);

        const content = $obj[19].innerHTML;
        const title =   $obj[7].innerText;

        // по хорошему регулярки надо вынести наверх,
        // чтобы они компилировались 1 раз
        const text = content
            .replace(/[\n\r]/g, ' ')
            .replace (/\s{2,}/g, ' ');

        console.log(text + " " + title);
    }
}).catch(err => {
    console.error(err);
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы