async await iifee code example

Example 1: async await in forloops

// Series loop
async (items) => {
  for (let i = 0; i < items.length; i++) {
  	
    // for loop will wait for promise to resolve
    const result = await db.get(items[i]);
    console.log(result);
  }
}

// Parallel loop
async (items) => {
  let promises = [];
  
  // all promises will be added to array in order
  for (let i = 0; i < items.length; i++) {
    promises.push(db.get(items[i]));
  }
  
  // Promise.all will await all promises in the array to resolve
  // then it will itself resolve to an array of the results. 
  // results will be in order of the Promises passed, 
  // regardless of completion order
  
  const results = await Promise.all(promises);
  console.log(results);
}

Example 2: js async await

/* Notes:
	1. written like synchronous code
    2. compatible with try/catch blocks
    3. avoids chaining .then statements
    4. async functions always return a promise
    5. function pauses on each await expression
    6. A non promise value is converted to 
       Promise.resolve(value) and then resolved
*/

// Syntax
// Function Declaration
async function myFunction(){
  await ... // some code goes here
}
  
// Arrow Declaration
const myFunction2 = async () => {
  await ... // some code goes here
}
  
 // OBJECT METHODS

const obj = {
	async getName() {
		return fetch('https://www.example.com');
	}
}

// IN A CLASS

class Obj {
	// getters and setter CANNOT be async
	async getResource {
		return fetch('https://www.example.com');
	}
}