Как вызвать метод несколько раз (динамически) асинхронным способом в node.js - PullRequest
0 голосов
/ 21 марта 2020

Я пишу скрипт в node.js, где у меня есть метод с одним параметром - id.

funcToCall(id)
{
    // some code ...

    returns a promise
}

var ids = [ list of ids] // input occurs dynamically

Я получу список идентификаторов в качестве входных данных, и мне нужно вызывать метод с каждым ввод идентификатора асинхронным способом. Я нашел способ обрабатывать Promise.all () для статического / фиксированного числа вызовов методов

const reflect = p => p.then(v => ({v, status: "fulfilled" }),
                        e => ({e, status: "rejected" }));

var arr = [ fun(id1), fun(id2), fun(id3) ];      // how to make this dynamically ?

Promise.all(arr.map(reflect)).then(function(results) {
    var success = results.filter(x => x.status === "fulfilled");
});

Есть ли какой-либо возможный способ динамического вызова метода, кратного раз и в асинхронный способ?

Заранее спасибо !!

1 Ответ

1 голос
/ 21 марта 2020

Вы можете использовать .map для массивов и использовать Promise.all вот так

function funcToCall(id) {
  return Promise.resolve(id); // this could be your promise.
}

const ids = [1, 2, 3, 4];

Promise.all(ids.map(id => funcToCall(id))).then((res = console.log(res)));

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