P
P
Peter2018-02-28 16:52:36
Node.js
Peter, 2018-02-28 16:52:36

How to synchronize requests in nodeJs?

The application has one socket event that needs to be handled synchronously.

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

How to do it?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
D
Dmitry Belyaev, 2018-02-28
@volkov_p_v

I would do this:

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

Naturally, if synchronization is also needed between threads, then it will not save, only within 1 process,
if multithreading is still needed, then:
1. add our tasks to the queue in redis (RPUSH)
2. parse the tasks by processes by workers one at a time (LPOP)

V
Vladimir Skibin, 2018-02-28
@megafax

Use Queues

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question