Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点js串行http请求_Javascript_Node.js_Http_Https_Request - Fatal编程技术网

Javascript 节点js串行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

我需要发出2个http请求-第一个http请求的响应将用于第二个http请求。我执行请求的方式是使用http模块中的
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的问题,这是关于串行请求,而不是并行请求(这是
所承诺的。所有的
都是为了)。