const request = require('superagent'); const _ = require('lodash'); const getTopPosts = async (subreddit, options = {}) => { const {count = 10, interval = 'week'} = options; const sub = `https://www.reddit.com/r/${subreddit}/top.json?sort=top&t=${interval}`; const res = await request.get(sub); const {children: posts} = res.body.data; return posts.slice(0, count).map((post) => { const {title, subreddit, score, url} = post.data; return {title, subreddit, score, url}; }); }; const getTopPostsInFavoriteSubreddits = async ( subreddits, options = {} ) => { const {count = 5, interval = 'week'} = options; const promises = subreddits.map((sub) => { return getTopPosts(sub, {count, interval}); }); return Promise.all(promises).then(_.flatten); }; getTopPostsInFavoriteSubreddits([ 'programming', 'javascript', 'learnprogramming', ]) .then(console.log) .catch(console.log);