«Это» - все о сфере охвата. Каждая функция имеет свою собственную область действия, и поскольку все в JS является объектом, даже функция может хранить некоторые значения в себе, используя «this».
$('#a').click(function(){
console.log($(this).attr('href'));
});
Сначала установите запрос-обещание:
npm i request-promise
Затем измените свой код следующим образом:
const cheerio = require('cheerio');
const rp = require('request-promise');
var fs = require('fs');
async function getTitle(){
var data = await fs.readFileSync('./channels.json');
var Parsed_Data = JSON.parse(data);
console.log(Parsed_Data);
for (x of Parsed_Data){
// var url = 'https://www.youtube.com/channel/' + x.id + '/about';
// console.log(url);
let body=await rp( 'https://www.youtube.com/channel/' + x.id + '/about',
let $ = cheerio.load(body);
console.log($);
let title = $('title');
console.log(title.text());
}
}
На самом деле, вам не нужно ждать рядом с JSON.parse (данные);
Вы можете сделать:
function getBody(url) {
return new Promise((resolve, reject) => {
request( 'https://www.youtube.com/channel/' + x.id + '/about', function(err, res, body) {
if (err) {
return reject(err);
}
resolve(body);
});
})
}
async function getTitle(){
var data = await fs.readFileSync('./channels.json');
var Parsed_Data = await JSON.parse(data);
console.log(Parsed_Data);
for (x of Parsed_Data){
const body = await getBody('https://www.youtube.com/channel/' + x.id + '/about');
let $ = cheerio.load(body);
console.log($);
let title = $('title');
console.log(title.text());
)};