Javascript NODE.JS如何返回使用ChereIO收集的数据(不返回任何内容)
我正在使用Node.js制作聊天机器人。我使用cheerio从html中提取信息并发送给用户。我可以从控制台上刮取数据并打印出来,但不能将该信息返回到变量。请帮忙 --解析部分--Javascript NODE.JS如何返回使用ChereIO收集的数据(不返回任何内容),javascript,html,node.js,bots,Javascript,Html,Node.js,Bots,我正在使用Node.js制作聊天机器人。我使用cheerio从html中提取信息并发送给用户。我可以从控制台上刮取数据并打印出来,但不能将该信息返回到变量。请帮忙 --解析部分-- const cheerio=require(“cheerio”), 请求=要求(“请求”); const init_url=”https://stu.dje.go.kr/sts_sci_md01_001.do?schulCode=G100000208&schulCrseScCode=4&schulKndScCode=
const cheerio=require(“cheerio”),
请求=要求(“请求”);
const init_url=”https://stu.dje.go.kr/sts_sci_md01_001.do?schulCode=G100000208&schulCrseScCode=4&schulKndScCode=04&schMmealScCode=2";
常量MealParser={};
MealParser.parse=()=>{
console.log(“”+init_url);
返回doRequest(makeURL(),函数(err,data){
控制台日志(数据);
返回数据;
});
}
函数doRequest(url,回调){
请求(url、函数(err、resp、html){
变量列表=[“初始数组”];
如果(!err){
const$=cheerio.load(html);
$('.tbl_第3类:包含(“중식")').父项().children().each(函数(){
list.push($(this.text());
});
返回回调(空,列表);
}
});
}
函数makeURL(){
var result_url=init_url;
返回结果url;
}
module.exports=MealParser;
您的回调正在返回一个值,我认为您应该研究回调是如何工作的
如果将基于回调的函数转换为承诺,则可以执行以下操作:
MealParser.parse = () => {
console.log(''+init_url);
return doRequest(makeURL())
.then(
data=>{
console.log(data);
return data;
},
error=>console.error(error)
)
}
function doRequest(url,callback){
return new Promise(
(resolve,reject)=>
request(url, function(err, resp, html) {
const list = ["initial array"];
if(err){
reject(err);
}else{
const $ = cheerio.load(html);
$('.tbl_type3 th:contains("중식")').parent().children().each(function () {
list.push($(this).text());
});
// return callback(null,list);//no use returning anything from a callback
resolve(list);
}
})
);
}