Promise.all behaviour

by Guillaume Seguin

HTML

<div id="app"></div>
<div id="test"></div>
<div id="error"></div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app, #test, #error {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
  text-align: center;
  margin: 0.5rem;
}

TypeScript

interface Person {
  firstName: string;
  lastName:  string;
}

function greeter(person: Person) {
  return "Hello, " + person.firstName + " " + person.lastName;
}

let user = {
	firstName: "Malcolm",
  lastName:  "Reynolds"
};

Promise.all([
	new Promise((resolve) => {
  	setTimeout(() => {
    	document.querySelector("#app").innerHTML = greeter(user);
      resolve();
    }, 3000);
  }),
  Promise.reject("ERROR!!"),
	new Promise((resolve) => {
  	setTimeout(() => {
      let guillaume = {
        firstName: "Guillaume",
        lastName:  "Seguin"
      };
      
    	document.querySelector("#test").innerHTML = greeter(guillaume);
      resolve();
    }, 5000);
  }),
]).catch(error => {
	document.querySelector("#error").innerHTML = error;
}