Удержание цикла, пока я не получу ответ от API [дубликат]

«Это» - все о сфере охвата. Каждая функция имеет свою собственную область действия, и поскольку все в JS является объектом, даже функция может хранить некоторые значения в себе, используя «this».

$('#a').click(function(){
console.log($(this).attr('href'));
});
0
задан Raj 16 January 2019 в 11:24
поделиться

2 ответа

Сначала установите запрос-обещание:

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 (данные);

0
ответ дан Alvin Lau 16 January 2019 в 11:24
поделиться

Вы можете сделать:

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());

)};
0
ответ дан Deepsy 16 January 2019 в 11:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: