volkov_p_v
@volkov_p_v
FrontEnd разработчик

Как синхронизировать запросы в nodeJs?

В приложении есть одно сокет событие, которое нужно обрабатывать синхронно.
socket.on('something', data=>{
  //тут много логики, но суть такова:
  //запрос в бд и файл, обработка и на основе полученных данных запись
  //не допускать последующих событий, пока данные не запишутся 
})


Как это сделать?
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
bingo347
@bingo347
Ищу разработчика на Vue (смотрите личку)
я бы так сделал:
let tasks = Promise.resolve();
socket.on('something', data => {
  tasks = tasks.then(async () => {
    //тут много логики, но суть такова:
    //запрос в бд и файл, обработка и на основе полученных данных запись
    //не допускать последующих событий, пока данные не запишутся 
  }).catch(e => {
    // обработка ошибок, чтоб процесс не прерывался
  });
});


Естественно, если нужна синхронизация еще и между потоками, то не спасет, только в пределах 1 процесса
если все же многопоточность нужна, то:
1. складываем наши задачи в очередь в redis (RPUSH)
2. разбираем задачи процессами воркерами по одной (LPOP)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
D2C.io Екатеринбург
от 70 000 руб.
OneTwoTrip! Москва
от 120 000 до 200 000 руб.
MobileUp Санкт-Петербург
от 100 000 руб.
16 авг. 2018, в 12:52
100000 руб./за проект
16 авг. 2018, в 12:43
3000 руб./за проект
16 авг. 2018, в 12:11
100 руб./за проект