Everything is working fine but empty array is returned so there's no output which can be noted when 2 outputs before 1. Can someone tell me what am I missing here? I tried making it work but couldn't so finally posting here.
'use strict';
var https = require('https');
async function main() {
var a = "hey";
var result = await fetchData(a);
result = result.join(" ");
console.log(result);
}
async function fetchData(substr) {
let pageNum = 1;
var sortArray = [];
let url = 'https://jsonmock.hackerrank.com/api/movies/search/?Title=' + substr + "&page=" + pageNum;
try {
https.get(url, (res) => {
res.setEncoding('utf8');
res.on('data', function(body) {
let dataRec = JSON.parse(body);
let movies = dataRec.data;
let totPages = dataRec.total_pages;
movies.map((a) => {
sortArray.push(a.Title);
console.log("1");
});
for (let i = 2; i <= totPages; i++) {
let newPage = i;
let url1 = 'https://jsonmock.hackerrank.com/api/movies/search/?Title=' + substr + "&page=" + newPage;
https.get(url1, (res) => {
res.setEncoding('utf8');
res.on('data', function(body) {
let newData = JSON.parse(body);
let newMovies = newData.data;
for (let i = 0; i < newMovies.length; i++) {
sortArray.push(newMovies[i].Title);
}
});
});
}
});
});
} catch (e) {
console.log(e);
}
console.log("2")
return sortArray;
}
main();