У меня есть функция, которая считывает данные с веб-страницы и публикует ее в консоли, но я хочу вернуть данные, которые я прочитал, и сделать что-то еще с ней. Так что вместо console.log (температура) я хочу вернуть значение температуры и сделать console.log (загрузить (url)), но он «undefined».Возвращает значение функции Node.js
//require https module
var https=require("https");
//require cheerio to use jquery-like and return a DOM tree
var cheerio=require('cheerio');
var global="";
//a function with url and callback par which connects to URL API and read the data
module.exports.download=function(url){
//read the data\
https.get(url,function(res){
var data="";
//add it to the data string
res.on('data',function(chunk){
data+=chunk;
});
//parse it with a callback function
res.on('end',function(){
var $=cheerio.load(data);
var temperature=$("span.temp.swip").text();
console.log(temperature);
});
}).on('error',function(err){
console.log(err.message)
});
}
//chose the url to connect
var Ploiesti='44.9417,26.0237';
var Brasov='45.597,25.5525';
var url='https://darksky.net/forecast/' + Ploiesti + '/si24/en';
//download(url);
Вы должны сделать это внутри 'res.on («конец»)' обратного вызова –
, что, как я, ве сделал вместо console.log (темпера ture) Я возвращал температуру и после того, как в конце я сделал console.log (скачать (url)), и он напечатал unifined –
Этот вопрос был задан буквально сотни раз. Вы должны научиться программировать с асинхронными результатами в Javascript. Дубликат выше дает вам много вариантов для этого. – jfriend00