问题描述
我正在尝试存储通过请求模块使用nodejs发出的http请求的响应,但是问题是请求完成后我们无法再访问它,我们可以在回调之后说
如何添加
这是我到目前为止尝试过的
试图使用var而不是let 试图将其传递给函数,以便以后可以使用,但没有运气
这是我的代码,任何人都可以帮上NodeJS的新手,这就是为什么一个菜鸟问题
var request = require('request')
var response
function sort(body) {
for (var i = 0; i < body.length; i++) {
body[i] = body[i].replace("\r","");
}
response = body
return response
}
request.get(
"https://api.proxyscrape.com/?request=getproxies&proxytype=http&timeout=10000&country=all&ssl=all&anonymity=all",(err,res,body) => {
if (err) {
return console.log(err);
}
body = body.split("\n");
sort(body);
}
);
console.log(response)
在这种情况下,我要从此api获取代理,并尝试将它们存储在称为response的变量中
解决方法
var request = require("request");
var response;
async function sort(body) {
await body.split("\n");
response = await body;
console.log(response); // this console log show you after function process is done.
return response;
}
request.get(
"https://api.proxyscrape.com/?request=getproxies&proxytype=http&timeout=10000&country=all&ssl=all&anonymity=all",(err,res,body) => {
if (err) {
return console.log(err);
}
sort(body);
}
);
// console.log(response); //This console log runs before the function still on process,so that's why it gives you undefined.
- 尝试使用此代码,我刚刚测试过就可以正常工作。
- 将控制台日志放入功能内,以便您查看结果。
- 您放置的console.log实际上在处理数据之前运行,因此这就是为什么“未定义”的原因。
- 实际上,排序函数完成处理后,您将获得数据。