在Node.js中,你可以使用异步编程和回调函数,或者使用现代的async/await
语法来一个接一个地发送请求。以下是两种方法的示例:
const http = require('http');
function makeRequest(url, callback) {
http.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
callback(null, data);
});
}).on('error', (err) => {
callback(err);
});
}
function requestInSequence(urls, finalCallback) {
let results = [];
let index = 0;
function handleResult(err, data) {
if (err) return finalCallback(err);
results.push(data);
index++;
if (index === urls.length) {
finalCallback(null, results);
} else {
makeRequest(urls[index], handleResult);
}
}
makeRequest(urls[index], handleResult);
}
const urls = [
'http://example.com',
'http://example.org',
'http://example.net'
];
requestInSequence(urls, (err, results) => {
if (err) {
console.error('Error:', err);
} else {
console.log('Results:', results);
}
});
async/await
const axios = require('axios');
async function makeRequest(url) {
try {
const response = await axios.get(url);
return response.data;
} catch (error) {
throw error;
}
}
async function requestInSequence(urls) {
const results = [];
for (const url of urls) {
try {
const data = await makeRequest(url);
results.push(data);
} catch (error) {
console.error(`Error fetching ${url}:`, error.message);
}
}
return results;
}
const urls = [
'http://example.com',
'http://example.org',
'http://example.net'
];
requestInSequence(urls).then(results => {
console.log('Results:', results);
}).catch(error => {
console.error('Error:', error);
});
makeRequest
函数用于发送HTTP GET请求并处理响应。requestInSequence
函数按顺序遍历URL数组,并在每个请求完成后调用下一个请求。async/await
方法:makeRequest
函数使用axios
库发送HTTP GET请求并返回响应数据。requestInSequence
函数使用async/await
语法按顺序发送请求,并在每个请求完成后处理结果和错误。async/await
方法:async/await
方法:通过这两种方法,你可以按顺序发送HTTP请求并处理响应数据。选择哪种方法取决于你的项目需求和个人偏好。
领取专属 10元无门槛券
手把手带您无忧上云