Je ne peux pas appeler une API à l'intérieur de la boucle à l'aide de nodejs

0

La question

Je vais essayer d'appeler une API à l'intérieur d'une boucle à l'aide de Nodejs,lorsque le code est exécuté uniquement le dernier élément est appelé par l'API: le code :

      var array=[12,124,852,256,5677,256,5679,2546,567,28,574]
      for(var i=0;i<array.length;i=i++){
         var b = array.splice(i,3);        
          const parameters1 = {
            Ids: b.toString(),
            limit: 45,
          }

          const get_request_args1 = querystring.stringify(parameters1);

          const options1 = {

            method: 'GET',

            host: "host",

            port: '443',

            path: path + '?' + get_request_args1,

            headers: {

                'Accept': 'application/json',

                'authorization': `Bearer ${token}`,

                'Accept-Encoding': 'identity',
                    }

            }

    var req = http.request(options1, (res) => {

        context.log("API CALL...",i);

    var body = "";

    var pages = 0;

    var offset = [];

    var limit = 100000;

    res.on("data", (chunk) => {

        body += chunk;

    });
    res.on("end", () => {
        const obj = JSON.parse(body);
        //context.log('total pages 3 :', pages);
        context.log('total  :', obj.total);
        context.res = { body: offset };
        context.done();

    });

}).on("error", (error) => {

    context.log('ERROR :', error);

    context.res = {

        status: 500,

        body: error

    };
    context.done();
});      

}

lorsque ce code est exécuté uniquement le dernier élément du tableau exécuté par l'API, ce que je suis à la recherche d'exécution de l'api pour chaque itération de la boucle for, toute aide s'il vous plaît ?

async-await javascript node.js
2021-11-23 18:34:54
1

La meilleure réponse

0

Vous ne savez pas comment votre pleine fonction ressemble, mais vous devez construire votre fonction comme entièrement structuré comme async-vous attendent.

Et vous pouvez également utiliser la carte de fonction au lieu de for.

const yourFunction = async () => {
  try {
    const array = [12,124,852,256,5677,256,5679,2546,567,28,574];

    const requests = array.map(async (item) => {
      ...
      var req = await http.request(async options1, (res) => {

        context.log("API CALL...",i);
      ...
    });

    await Promise.all(requests);
    ...
  } catch (err) {
    console.error(err);
  }
}
2021-11-23 19:07:52

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................