Je fais une demande qui renvoie les données paginés, donc je veux appeler une fonction récursive jusqu'à ce que j'ai toutes les pages de données, comme suit:Comment revenir promesse la chaîne après récursion
router.get("/", (req, res) => {
doRequest(1, [])
.then(result => {
res.status(200).send(result);
})
.catch(error => {
console.error(error);
res.status(500).send("Error from request");
});
});
function doRequest(page, list){
let options = {
uri : "www.example.com",
qs : { "page" : page }
};
request(options)
.then((results) => {
list.push(results);
if(page === 2){
return Promise.resolve(list);
} else {
return doRequest(++page, list);
}
})
.catch((error) => {
return Promise.reject(error);
});
}
Mon itinéraire revient immédiatement avec Cannot read property 'then' of undefined
, donc doRequest()
renvoie apparemment undefined
tout de suite, plutôt que de retourner la liste quand il est prêt. Je suis nouveau pour les promesses, donc je suis sûr qu'il me manque quelque chose de très simple.
'doRequest' ne renvoie rien ... vouliez-vous dire' return request' dans 'doRequest' pour retourner une Promesse que vous pouvez' .then'? –