@yopive3562

Как ожидать выполнение циклической функции?

Доброго времени суток! Горожу какой-то дикий костыль, как мне кажется.
Цель такая - ожидать выполнение данных партиями и на основание результатов что-то делать. Здесь нельзя просто воспользоваться await'om какой-то там функции.
Попробовал сделать через такую конструкцию:
Когда приходят данные, добавляем в пул текущей итерации и ожидаем промиса после выполнения requestPull[currentRequestNumber]["promise"]. После этого вытаскиваем результат, который принадлежит данным.
Проблема в том, что иногда уже в процессе выполнения приходят новые данные. Они добавляются в текущий пул, но данные уже обрабатываются. Из-за этого в резалте их не будет. При возвращение промиса при попытке получить результат с этими данными будет undefined. И эти данные теряются.
Каким преобразовать структуру или как все переделать?(
requestPull[currentRequestNumber] = {
            "currentRequestNumber": currentRequestNumber, //текущий номер итерации
            "promise": run(), //возвращает промис при выполнение
            "data": [] //входные данные
            "result": {} //результат выполнение run() для каждых данных
        }


upd1:
Допустим, данные приходят каждую секунду. Данные нельзя обрабатывать отдельно. Обработка всех пришедших данных занимает 2+3 секунд.
При старте обработки первые две секунды происходят некоторые действия. После этого берутся все данные и начинается обработка. Все данные пришедшие за след три секунды будут потерены.
Промис отработает после окончания обработки ^5 секунд(закончится обработка)^, но результатов не будет по таким данным.
Все числа условные.
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы