Я пытаюсь получить доступ к API, и мне придется выполнять вызовы API несколько раз, основываясь на номерах страниц, которые нужно перебрать, ниже приведен код, который я использую, и как я могу получить все ответы, отправленныев массив.
, поскольку nodeJs является однопоточным. Он не ожидает ответов от API.Как я могу решить эту проблему и убедиться, что все значения ответа помещаются в массив
Внутри цикла for я хочу получить окончательный массив, содержащий все значения ответа API.Итак, я проверяю общее значение страницы и номер страницы ответа, если это совпадает, что означает, что это будет последняя страница, и я помещаю массив в другую функцию, но когда я делаю это, он не имеет всех значений, потому что nodejs не ожидаетответ API.
const fs = require('fs');
var pepKey = 'asdfasdfasd';
var pepResponse;
var pepTimecards = [];
pep();
function pep(){
var options = {
headers: {
"content-type": "application/json",
},
agentOptions: {
pfx: fs.readFileSync('./certificate/asdfsdaf.p12'),
passphrase: 'asdasdsda'
}
};
request.get('https://source.asdfasdf.io/api/organisations/asdfasdf/timecard_keys?timecard_type=Flex',options, (err, res, body) => {
if (err) { return console.log(err); }
pepResponse = JSON.parse(body)
pepTimecards = pepResponse.data;
if(pepResponse.pages > 1){
for(let i=2;i<=pepResponse.pages;i++){
var url = 'https://source.`pepme`.io/api/organisations/sdfsadf/timecard_keys?timecard_type=Flex&page='+pageNo;
request.get(url,options, (err, res, body) => {
if (err) { return console.log(err); }
body = JSON.parse(body)
pepTimecards = pepTimecards.concat(body.data)
if(pepResponse.pages == body.page){
console.log(pepResponse.pages)
console.log(body.page +"body page")
console.log(pepTimecards)
}
});
}
}else{
}
});
}