blue-iterate
Version:
A collection of streams that work well with promises (through, map, reduce). Through2 with promise support
26 lines (22 loc) • 780 B
JavaScript
import { parallelMap, map, collect } from 'blue-iterate'
import got from 'got'
const pokeGenerator = async function* () {
let offset = 0
while(true) {
const url = `https://pokeapi.co/api/v2/pokemon/?offset=${offset}`
const { body: pokemon } = await got(url, { json: true })
if (pokemon.results.length > 0) {
offset += pokemon.results.length
for (const monster of pokemon.results) {
yield monster
}
} else {
return
}
}
}
const loadUrl = ({ url }) => got(url, { json: true }).then(resp => resp.body)
const loadPages = parallelMap(2, loadUrl)
const logMonsters = map(pokemon => console.log(pokemon.name, pokemon.sprites.front_default))
await collect(logMonsters(loadPages(pokeGenerator())))
console.log('caught them all')