@dikker3
Web - разработчик

Какой цикл использовать, чтобы последовательно выдавались значения?

Допустим в 16:30 запускаю функцию в цикле от 0 до 1440 минут с шагом 60 и формирую массив количества сообщений и массив соответствующих временных отчетов, чтобы понять сколько было событий в каждый час за прошедшие сутки.
for (let i = 0; i < 1440; i+=60) {
        funcGetMessageToday(-i); // делает запрос на сервер
    }

Приходит такой JSON:
['18:30', '19:30', '20:30', '21:30', '22:30', '23:30', '00:30', '01:30', '02:30', '03:30', '06:30', '04:30', '09:30', '07:30', '11:30', '05:30', '12:30', '13:30', '08:30', '10:30', '15:30', '14:30', '16:30']

Местам время перепутано. Нужно чтобы возвращался корректный массив.
['18:30', '19:30', '20:30', '21:30', '22:30', '23:30', '00:30', '01:30', '02:30', '03:30', '04:30', '05:30', '06:30', '07:30', '08:30', '09:30', '10:30', '11:30', '12:30', '13:30', '14:30', '15:30', '16:30']


Может мне какой-то другой цикл или вообще способ выбрать, чтобы была последовательная работа функции? Вроде сам for последовательный, но приходят значения не всегда корректно.
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вангую - функция у вас асинхронная и порядок занесения данных в массив соответствует не порядку запросов, а порядку прихода ответов.
Лучший вариант - менять API, чтобы сервер возвращал нужные данные за один запрос, например, с передачей ему начала и конца интервала и шага по времени.
Ещй вариант - сохранять данные в объект или Map, где ключом является время. При необходимости потом преобразовывать в массив по сортированным ключам.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Сортировать после получения данных. Либо поочерёдно пробовать доставать данные
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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