Я пытаюсь чередовать выполнение нескольких функций одна за другой.
Приведенный ниже код правильно вычисляет страницы, но ничего не возвращает вызывающей стороне.
const rp = require('request-promise');
const cheerio = require('cheerio');
const fetch = require('node-fetch');
async function getNumberOfPages(url) {
const pageUrl = url + "1";
rp(pageUrl)
.then(function(html) {
return fetch(pageUrl)
.then(response => response.text())
.then(html => {
const entriesPerPage = 20;
const $ = cheerio.load(html);
let totalEntries = $(".Aa").first().text()
let pagesNumber = Math.ceil(totalEntries / entriesPerPage);
return pagesNumber;
})
})
}
На самом деле, вызывающий абонент сразу же входит в B), и журнал консоли выглядит так: «Number pages: undefined».
function loadAllFeedbacks(url) {
getNumberOfPages(url)
// A) Get first the pages number
.then(result => {
console.log("Number pages: " + result);
})
// B) Executes this next
.then(() => {
rp(url)
Я не могу понять, почему.Кажется, что я должен сделать что-то с извлечением, но не знаю как.
Также интересно, есть ли смысл использовать rp
и fetch
вместе, кажется, достаточно только одного.
Спасибо