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

    @yopive3562 Автор вопроса
    WbICHA, никак не определяю, что пришли все данные. Грубо говоря раз в 5 сек или раз в 5 секунд после поступления первых данных начинается проверка.


    Пока что я предполагаю, что тут можно очередью воспользоваться, но я по прежнему не понимаю зачем.

    Есть уже готовая рабочая логика. но с кучей костылей с while' лупами и тд.

    Окей, реализация с очередью может быть похожей на то, что есть сейчас. Как с помощью очереди ожидать выполнение циклической функции по обработке данных? Просто есть небольшое окно во время обработки, когда данные уже ожидают промис, но после выполнения этой обработки в результатах не будет информации для этих данных
  • Как ожидать выполнение циклической функции?

    @yopive3562 Автор вопроса
    WbICHA,
    Допустим, данные приходят каждую секунду. Данные нельзя обрабатывать отдельно. Обработка всех пришедших данных занимает 2+3 секунд.
    При старте обработки первые две секунды происходят некоторые действия. После этого берутся все данные и начинается обработка. Все данные пришедшие за след три секунды будут потерены.
    Промис отработает после окончания обработки ^5 секунд(закончится обработка)^, но результатов не будет по таким данным.
    Все числа условные.
    И ответы на вопрос:
    Я не знаю сколько будет данных и как часто приходят. Я знаю, когда закончится обработка.
  • Как ожидать выполнение циклической функции?

    @yopive3562 Автор вопроса
    WbICHA, это не так важно. Производительности, трафика, кол-ва запросов и тд. Так нужно.
  • Как ожидать выполнение циклической функции?

    @yopive3562 Автор вопроса
    WbICHA, данные приходят в полном объеме. Дальше идёт обработка. Обработка кусками для облегчения. Выполнять 1 обработка = 1 данные нельзя.
  • Как заменить цикл while?

    @yopive3562 Автор вопроса
    Дмитрий Беляев, звучит, как то, что и искал я!
    что-то вроде такого?
    Вроде бы работает, как и хотел. Отправьте ответ, чтобы я отметил его решением. Было бы круто, если бы показали какой-нить изящный код)
    let checkPull = {}
    let testData = ["test1", "test2", "test3", "test1"]
    for(let item of testData) run(item)
    
    async function run(item) {
        
            console.log(`input data ${item}`);
            
            if(!checkPull[item]) {
                console.log(`start check ${item}`);
                checkPull[item] = timeout(1000 * 5)
                
            }
            else {
                console.log(`skip check ${item}`);
                
            }
            await checkPull[item]
            console.log(`check ${item} done`);
        
    }
  • Как заменить цикл while?

    @yopive3562 Автор вопроса
    Сергей delphinpro все это понятно, про промисы и колбеки. вопрос немного про другое. посмотрите вопрос, я немного ниже добавил уточнение.
    входные данные 1, 4 имеют одинаковое значение. но только в одном случае их нужно обрабатывать - иначе ждать выполнения проверки. Async/await и так используется, но не приходит в голову, как красиво завернуть все, чтобы обойтись без цикла while. Если такое вообще возможно
  • Как заменить цикл while?

    @yopive3562 Автор вопроса
    Дмитрий Беляев, допустим, по значению. приходят 4 входных значения.
    1)1
    2)2
    3)3
    4)1
    и вот для 4-ых входных данных не нужно выполнять проверку, потому что она еще выполняется для 1-ых. из-за этого приходится стопорить код циклом вида
    while(!isChecked) {
    await sleep(100) // промис возвращающийся через 100мс
    }