Async simple example

by jonahe

JavaScript

/* test data */
const users = [{ name: "kalle"}, { name: "kajsa"}, { name: "johan"}, { name: "nisse" }];

const commentsByUserName = users.reduce((comments, user) => {
	comments[user.name] = [1,2,3].map(i => `comment ${i} by ${user.name}` );
  return comments;
}, {});
/* END test data */


const API = {
	fetchUserByName: (name) => {
  	return new Promise((resolve, reject) => {
    	console.log("fetching users..");
    	setTimeout(() => resolve(users.find(u => u.name === name)), 1500);
    });
  },
  fetchCommentsByUser: (user) => {
  	return new Promise((resolve, reject) => {
    	console.log("fetching comments for ", user.name, commentsByUserName);
    	setTimeout(() => resolve(commentsByUserName[user.name]), 1500);
    });
  }
}

async function initComments(userName) {
	const user = await API.fetchUserByName(userName);
  console.log("Got user", user);
  const comments = await API.fetchCommentsByUser(user);
  console.log("Got comments", comments);
}

initComments("kalle");