Как я могу отвечать на запросы клиентов по одному в node js - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу ответить на запрос клиента один за другим. Рассмотрим следующий код:

let i = 1;
router.post("/test", (req, res) => {
    // Wait for response to previous request from another client (If there is)
    console.log(i)
    setTimeout(function() {
      i++ 
      return res.json(true);
    }, 10000);
});

Я хотел бы ответить на два последовательных запроса следующим образом:

в 0 с: журнал 1
И после ответа на предыдущий запрос
в 10с: лог 2

1 Ответ

0 голосов
/ 20 февраля 2020

https://caolan.github.io/async/v3/docs.html#queue

Это не обрабатывает ошибки в обратном вызове, но вы получите представление о машине.

const async = require('async')

var q = async.queue(function(task, callback) {
    task.res.json(true)
    callback();
}, 1); // concurrency 1

let i = 1;
router.post("/test", (req, res) => {
    q.push({res}, (err) => console.log(i++)) 
});

Это то, что вы ищете?

Хорошая работа, сделав минимальный пример вашей проблемы, кстати.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...