Создайте пул, который асинхронно следит за массивом (пул) на предмет изменений, а затем выполняет через async.eachlimit - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь сделать так, чтобы был пул, который сидит на сервере, всегда ожидая запроса от клиента.Затем, когда клиент выполняет действие, добавьте это действие в пул массивов, выполните обработку на сервере и удалите его из пула после завершения обработки.

Я пытался использовать async.eachlimit, однако всякий раз, когдаЯ поместил элементы в массив, ничего не происходит.Я также на базовом уровне использовал генераторы es6 согласно этому https://github.com/caolan/async/issues/1551,, хотя не понимаю их достаточно, чтобы заставить его работать.

let tasksPool = [];

  let processTask = async function(task) {
    // await etc
  }

  eachLimit(tasksPool, 5, function(task, callback) {
    processTask(task).then(() => {
      callback();
    });
  });

  app.get('/some-url', (req, res) => {
    tasksPool.push(req.body.task);
  });

Но он не перезапускает процесс eachLimit, когда я что-то добавляю в массив.Я хочу, чтобы eachLimit эффективно отслеживал изменения в массиве.Хотелось бы мне понять, что происходит с вашим примером, достаточно, чтобы решить это самостоятельно, хотя раньше я не видел много синтаксиса.

Я ожидаю, что при добавлении элементов в пул каждый предел будет выполнять новые элементы, добавленные в массив.

Любые предложения очень ценятся?

...