Я использую внешний API, который я использую в качестве источника данных.Этот API возвращает свои данные на основе типа, подобного нумерации страниц.
Так что я могу получить данные для страниц 1, 2, 3 и т. Д. Но проблема в том, что мне нужны все данные одновременно, APIне поддерживает это, поэтому я пишу это сам.
Я сделал фактический код вызова:
function getTransactionPart(start){
return new Promise(function(resolve, reject) {
const options = {
url: 'myurl?limit=40&start='+start,
json: true
};
let result = {total_transactions : 0, transactions : []};
request(options, function (error, response, body) {
if (error) {
return reject(result);
}
body.data.forEach(function (transaction) {
result.transactions.push({
timestamp: transaction.timestamp,
amount: transaction.amount,
confirmed: transaction.confirmed
});
});
result.total_transactions = body.total
return resolve(result);
})
})
}
Приведенный выше код возвращает мне ожидаемые результаты с пределом, который я дал.Также я получаю номер обратно (result.total_transactions), когда это больше 40, мне нужно сделать еще один вызов с 40 в качестве запуска и т. Д. И т. Д.
Код, в котором мне нужно его объединить:
function getTransactions(start) {
return new Promise(function(resolve, reject) {
getTransactionPart(start).then(result => {
if(result.total_transactions > 40) {
//next call
} else {
// return all?
}
console.log(result)
}).catch(error => {
console.error(error);
return r.json({
})
});
})
}
Итак, я делаю первый вызов с getTransactionPart (0), после чего сам метод должен объединить результат из всех вложенных вызовов и вернуть весь результат, как и ожидалось.Как я могу сделать это с помощью рекурсии и обещаний?