在NodeJS中使用多个http调用的最佳方式

时间:2018-01-29 17:58:05

标签: javascript node.js http

我有以下情况。我需要进行3次http调用,返回所有3个请求的结果。问题是我还没有找到一种方法来同步完成这项工作。在NodeJS中解决这个问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

javascript es5 +的内置标准是使用promises,并保证所有人在完成时等待。

let req1 = new Promise(function (resolve, reject) {
    ///http request that resolves/rejects
});

let req2 = new Promise(function (resolve, reject) {
    ///http request that resolves/rejects
});

let req3 = new Promise(function (resolve, reject) {
    ///http request that resolves/rejects
});

Promise.all([req1, req2, req3]).then(function (values) {
    console.log(values);
});
等等。

答案 1 :(得分:0)

这里有无数的模块。我个人经常使用async,为此您可以使用async.eachSeries()

答案 2 :(得分:0)

最好的方法是“宣传”您的请求。有多种方式,但我最喜欢的库(我认为是最完整的库之一)是Bluebirdjs。使用蓝鸟,您可以宣传完整的图书馆,当然还有您自己的要求。

Promise.promisify(
    function(any arguments..., function callback) nodeFunction,
    [Object {
        multiArgs: boolean=false,
        context: any=this
    } options]
) -> function

例如:

var getAsync = Promise.promisify(redisClient.get);
getAsync.call(redisClient, 'foo').then(function() {
    //...
});

点击此处查看一些示例:http://bluebirdjs.com/docs/working-with-callbacks.html#more-common-examples