nodejs – 多个asynchronoushttp请求

我刚刚开始了我使用nodejs的旅程,并希望创build一个简单的nodejs应用程序,需要: – 首先从via http请求/获取一些初始数据, – 使用收到的json执行另一组请求(一些可以并行,有些需要先执行,接收的数据将被用来创build有效的url)。

考虑到nodejs是asynchronous的,并基于callback,我想知道什么是最好的方式来实现这个“干净的代码”,而不是太乱了代码。

感谢任何提示/指导,马克

也许检查一下Async库。 有很多内置的function,似乎完成你在找什么。 几个有用的蝙蝠可能是“async.waterfall”和“async.map”。

async.waterfall

async.map

一致认为这是主观的,总的来说,走的方向是承诺,有本土的承诺:

原生承诺文件 – MDN

对于您的特定问题,imo,npm模块request-promise提供了一些很好的解决scheme。 它本质上是请求模块的“Promisified”版本:

它将允许你GET / POST / PUT / DELETE,并跟随每个请求与一个。 then()你可以继续做更多的调用,如下所示:

– 这个代码首先从服务器获取一些东西,然后将其他东西发送到该服务器。

 function addUserToAccountName(url, accountName, username, password){ var options = assignUrl(url); // assignUrl is not in this code request .get(options) //first get .auth(username, password) .then(function(res) { var id = parseId(res.data, accountName); //parse response return id; }) .then(function(id) { var postOptions = Object.assign(defaultSettings, {url: url + id + '/users'}) request.post(postOptions) // then make a post .auth(username, password) .then(function(response) { //console.log(response); }) .catch(function(err) { console.log((err.response.body.message)); }) }) } 

你可以继续使用.then()不pipe你从前面的.then()返回什么.then()都将被传递给函数。

请求承诺