Node.js 如何提出不同的要求';是否在同一文档中使用nodejs和request进行响应?
嗨,我想把不同请求的响应放在同一个文档中。我有以下文件:Node.js 如何提出不同的要求';是否在同一文档中使用nodejs和request进行响应?,node.js,http,asynchronous,get,request,Node.js,Http,Asynchronous,Get,Request,嗨,我想把不同请求的响应放在同一个文档中。我有以下文件: var result = {google:"", twitter:"", facebook:""} 我想对这些网站(google.com、Facebook.com、twitter.com)执行不同的GET请求,并将所有结果放在相应字段中。 我尝试了嵌套回调,但这样我必须先做google调用,然后是twitter等,如下所示: Request({ url:first_url, },function(err, r
var result = {google:"", twitter:"", facebook:""}
我想对这些网站(google.com、Facebook.com、twitter.com)执行不同的GET请求,并将所有结果放在相应字段中。
我尝试了嵌套回调,但这样我必须先做google调用,然后是twitter等,如下所示:
Request({
url:first_url,
},function(err, response, body) {
if (err) {
request.log(err);
}else{
risultato.google = body;
Request({
url:second_url,
},function(err, response, body) {
if (err) {
request.log(err);
}else{
risultato.facebook = body;
Request({
url:third_url,
},function(err, response, body) {
if (err) {
request.log(err);
}else{
risultato.twitter = body;
console.log(result);
}
});
}
});
}
});
所以我必须知道如何并行处理所有请求,当我在result对象中得到所有请求的响应时,我必须使用它 您可以使用
你可以用
async
的另一种选择是使用Promise API。有一个requestpromise
npm库(),它为每个请求返回一个承诺。我们可以发送每个URL的请求,然后简单地调用承诺。承诺列表中的所有内容:
const request = require('request-promise');
const urls = ['http://google.com', 'http://yelp.com'];
// List of Promises that resolve the original URL and the content
const resultPromises = urls.map(url => {
return request(url).then(response => ({ url, response }));
});
Promise.all(resultPromises)
.then(results => {
// results is an array containing the URL and response for each URL
console.log(results);
});
async
的另一种选择是使用Promise API。有一个requestpromise
npm库(),它为每个请求返回一个承诺。我们可以发送每个URL的请求,然后简单地调用承诺。承诺列表中的所有内容:
const request = require('request-promise');
const urls = ['http://google.com', 'http://yelp.com'];
// List of Promises that resolve the original URL and the content
const resultPromises = urls.map(url => {
return request(url).then(response => ({ url, response }));
});
Promise.all(resultPromises)
.then(results => {
// results is an array containing the URL and response for each URL
console.log(results);
});