Voor een vriend maak ik een simpel programmatje in Node.js wat een JSON result moet ophalen bij een API. Over deze API heb ik geen controle. Het ophalen doe ik middels het NPM package node-fetch.
Als ik dit éénmaal wil uitvoeren is dit geen probleem. De API retourneert echter maximaal 100 objecten per request, dus voor een volledige data-set moet ik meerdere requests uitvoeren. In de url kan je dan de parameter offset meegeven (?offset=x), om de eerste x aantal objecten over te slaan en de volgende 100 te retourneren.
Nu loop ik tegen het concept Promises aan en zou dit graag willen inzetten om geen chaotische callback-hell te schrijven. Maar het begint mij een beetje te duizelen. De requests zijn dan wel asynchroon, ze moeten wél sequentieel worden uitgevoerd. Immers weet ik pas bij de response (wanneer deze 100 objecten bevat) of ik nog meer objecten op moet halen. Hoe ga ik dit in de juiste Promise vorm gieten? Het probleem is dus de Promise syntax/werking, zonder dat het platform er echt toe doet.
Het beste voorbeeld wat ik heb kunnen vinden is dit: Print results one by one, slower overall.
Wat weer afgeleid is van het volgende voorbeeld: Creating a sequence.
Echter is bij beide voorbeelden vooraf bekend hoeveel requests plaats moeten vinden en is het bij mij afhankelijk van de response. Hoe kan ik een Promise een vooraf onbekend aantal keer herhalen?
Denk ik nu helemaal fout en is dit niet mogelijk of kan iemand mij het juiste pad wijzen? Wellicht aan de hand van de genoemde voorbeelden?
Duizend maal dank!
Als ik dit éénmaal wil uitvoeren is dit geen probleem. De API retourneert echter maximaal 100 objecten per request, dus voor een volledige data-set moet ik meerdere requests uitvoeren. In de url kan je dan de parameter offset meegeven (?offset=x), om de eerste x aantal objecten over te slaan en de volgende 100 te retourneren.
Nu loop ik tegen het concept Promises aan en zou dit graag willen inzetten om geen chaotische callback-hell te schrijven. Maar het begint mij een beetje te duizelen. De requests zijn dan wel asynchroon, ze moeten wél sequentieel worden uitgevoerd. Immers weet ik pas bij de response (wanneer deze 100 objecten bevat) of ik nog meer objecten op moet halen. Hoe ga ik dit in de juiste Promise vorm gieten? Het probleem is dus de Promise syntax/werking, zonder dat het platform er echt toe doet.
Het beste voorbeeld wat ik heb kunnen vinden is dit: Print results one by one, slower overall.
Wat weer afgeleid is van het volgende voorbeeld: Creating a sequence.
Echter is bij beide voorbeelden vooraf bekend hoeveel requests plaats moeten vinden en is het bij mij afhankelijk van de response. Hoe kan ik een Promise een vooraf onbekend aantal keer herhalen?
Denk ik nu helemaal fout en is dit niet mogelijk of kan iemand mij het juiste pad wijzen? Wellicht aan de hand van de genoemde voorbeelden?
Duizend maal dank!