Вызов функции в цикле, содержащем вызов функции, содержащей обещание, не выполняется все необходимое время

У меня есть цикл for, который вызывает функцию в Javascript (getItemsForFolderID) для каждого элемента в этом массиве (subfolders.data). В этом случае в массиве 80 элементов, но я могу видеть только операторы журнала для 6 ... getItemsForFolderID содержит обещание, которое вызывает функцию, которая возвращает обещание, и вызывает REST API для получения элементов (это работает!)

Кто-нибудь знает, почему делается всего 6 звонков? Я получаю 80 консольных записей для console.info('Getting Items for: ' + subfolders.data[j].id), но только шесть из них. console.info('No items for folder: ' + folderID); или console.info('There were items');

Вот цикл:

for (var j = 0; j < subfolders.data.length; j++) {
    console.info('Getting Items for: ' + subfolders.data[j].id);
    getItemsForFolderID(subfolders.data[j].id);
}

И функция, которую мы вызываем:

function getItemsForFolderID(folderID) {
  var getItemsPromise = getItemsForFolderIDFromAPI(folderID);
  getItemsPromise.then(function(items) {
    if (items.data.length === 0) {
        console.info('No items for folder: ' + folderID);
    }
    else {
        console.info('There were items');
    }
  });
}



var RateLimiter = require('request-rate-limiter');

var limiter = new RateLimiter({rate: 100, interval: 60, backoffCode: 429, backoffTime: 15, maxWaitingTime: 2600
});

function getItemsForFolderIDFromAPI(folderID) {
    return new Promise(function(resolve, reject) {
        limiter.request({
            url: url + '/' + folderID,
            method: 'get',
            headers: headers
        }).then(function (response) {
            resolve(JSON.parse(response.body));
        }).catch(function (err) {
            reject(error);
        });
    });
}

Что вы видите на вкладке сети (инструменты разработчика)? Можете ли вы сказать, было ли сделано 80 HTTP-запросов? А как насчет ответов? Что показывают журналы вашего сервера? Как именно выглядит getItemsForFolderIDFromAPI()?

Pointy 03.10.2018 19:05

Извиняюсь, @MarkMeyer, я исправил это. Это была опечатка

MattTheHack 03.10.2018 19:12

@Pointy Я запускаю этот код как приложение nodejs из VS Code, и я не знаю, как просматривать исходящие HTTP-запросы там. Я получаю ответы на шесть запросов, но не больше.

MattTheHack 03.10.2018 19:19

@Pointy Я добавил эту функцию, чтобы помочь диагностировать проблему

MattTheHack 03.10.2018 19:22

Избегайте Антипаттерн конструктора Promise!

Bergi 03.10.2018 19:29

может быть запрос на блокировку браузера .. проверьте это наш stackoverflow.com/questions/985431/…

Vishal Rajole 03.10.2018 19:31

@VishalRajole Спасибо за это! Не был в курсе! Я запускаю решение через командную строку с помощью узла, поэтому как мне узнать, какой браузер я использую? Браузер вообще фактор?

MattTheHack 03.10.2018 19:32

@Bergi Это плохая практика? Не могли бы вы связать меня со статьей, описывающей передовой опыт? Я заинтересован в улучшении :)

MattTheHack 03.10.2018 19:33

@MattTheHack Да, это так, и я уже привел ответы, которые должны помочь вам избежать этого.

Bergi 03.10.2018 19:34

@MattTheHack Если вы запускаете это в узле, значит, вы не используете браузер, и комментарий Вишала не применяется

Bergi 03.10.2018 19:35

@MattTheHack Я предполагал, что вы используете браузер. В любом случае, какую версию узла вы используете. Надеюсь, это поможет stackoverflow.com/questions/12060869/…

Vishal Rajole 03.10.2018 19:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
11
45
0

Другие вопросы по теме