Javascript 节点js串行http请求
我需要发出2个http请求-第一个http请求的响应将用于第二个http请求。我执行请求的方式是使用http模块中的Javascript 节点js串行http请求,javascript,node.js,http,https,request,Javascript,Node.js,Http,Https,Request,我需要发出2个http请求-第一个http请求的响应将用于第二个http请求。我执行请求的方式是使用http模块中的http.get(url,callback)方法。但是我假设nodejs为第二个http请求生成另一个线程,并且响应异步到达。我所做的是将第二个http请求放在第一个http请求的回调中,它可以工作,但对我来说,它看起来像是无法维护的代码 还有其他方法吗 我在ES6中为您做了一个快速示例: const requestPromise = require('request-promis
http.get(url,callback)
方法。但是我假设nodejs为第二个http请求生成另一个线程,并且响应异步到达。我所做的是将第二个http请求放在第一个http请求的回调中,它可以工作,但对我来说,它看起来像是无法维护的代码
还有其他方法吗 我在
ES6
中为您做了一个快速示例:
const requestPromise = require('request-promise');
const rootUrl = 'https://jsonplaceholder.typicode.com';
const request1 = requestPromise(`${rootUrl}/posts/1`);
const request2 = requestPromise(`${rootUrl}/albums/1`);
Promise.all([request1, request2])
.then(values => {
console.log(values);
});
您需要安装两个依赖项:
"request": "^2.78.0",
"request-promise": "^4.1.1"
晚会迟到了,但只是重申了达瓦尔·索尼的话。如果您可以使用
async/await
语法,那么最简单的解决方案如下:
// inside "async" function
const asyncResult1 = await requestPromise(`${rootUrl}/posts/1`)
const asyncResult2 = await requestPromise(`${rootUrl}/albums/${asyncResult1.id}`)
请注意第一个异步请求的结果如何用于发出第二个异步请求 尝试
async
可能的重复,同样,@Niezborala的回答没有回答OP的问题,这是关于串行请求,而不是并行请求(这是所承诺的。所有的都是为了)。