async.eachLimit выполняется только для указанного предела, а не для всего массива - PullRequest
0 голосов
/ 12 июня 2018

Я использую асинхронную библиотеку npm (https://caolan.github.io/async/docs.html), чтобы ограничить количество параллельных запросов. Ниже приведен мой код:

    async.eachLimit(listOfItemIds, 10, function(itemId)
    {
      console.log("in with item Id: ",itemId);
    }, function(err) {
         if(err) 
         {
           console.log("err : ",err);
           throw err;
         }
    });

Но она не выполняется для всех listOfItemIds, она тольковыполняется в течение первых 10 и выходит.

Ниже вывод:

in with item id:  252511893899
in with item id:  142558907839
in with item id:  273235013353
in with item id:  112966379563
in with item id:  192525382704
in with item id:  253336093614
in with item id:  112313616389
in with item id:  162256230991
in with item id:  282981461384
in with item id:  263607905569

1 Ответ

0 голосов
/ 12 июня 2018

Вам также необходимо передать метод callback ().

Вот посмотрите на приведенный ниже код, это будет работать.

async.eachLimit(listOfItemIds, 2, function(itemId, callback)
{
  console.log("in with item Id: ",itemId);
  callback();
}, function(err) {
      if(err) 
      {
        console.log("err : ",err);
        throw err;
      }
});

Это напечатает все элементы в массиве, у меня ограничено количество параллельных выполнений, равное 2 в приведенном выше случае.

Надеюсь, это поможет!

...