Comment attendre et retourner le résultat d'une adresse http.demande(), de sorte que plusieurs demandes exécuté en série?

Supposons qu'il existe une fonction doRequest(options), qui est censé effectuer une requête HTTP et utilise http.request().

Si doRequest() est appelée dans une boucle, je veux que la prochaine demande est faite après le précédent terminé (exécution en série, l'un après l'autre). Afin de ne pas salir avec les rappels et les Promesses, je veux utiliser la async/await modèle (transpiled avec Babel.js courir avec Nœud 6+).

Cependant, il est clair pour moi, comment attendre la réponse de l'objet pour la poursuite du traitement et de la façon de le retourner comme résultat de doRequest():

var doRequest = async function (options) {

    var req = await http.request(options);

    //do we need "await" here somehow?
    req.on('response', res => {
        console.log('response received');
        return res.statusCode;
    });
    req.end(); //make the request, returns just a boolean

    //return some result here?!
};

Si j'exécute mon code actuel à l'aide de moka à l'aide de diverses options pour les requêtes HTTP, toutes les demandes sont faites simultanément, il me semble. Ils ont tous échoué, probablement parce que doRequest() ne fait pas de retourner quoi que ce soit:

describe('Requests', function() {
    var t = [ /* request options */ ];
    t.forEach(function(options) {
        it('should return 200: ' + options.path, () => {
            chai.assert.equal(doRequest(options), 200);
        });
    });
});

OriginalL'auteur CoDEmanX | 2017-01-04