JSFiddle - React, Tailwind, and code Playground

by kpulkit29

HTML

<input onchange="debugger;onChange()">

JavaScript

function change(e) {
	console.log("here");
}

function debounce(func, timer) {
	let timerId;
  return function() {
  clearTimeout(timerId);
  timerId = setTimeout(() => {
    	func()
    }, timer);
  }
}

var onChange = debounce(change, 100);

const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(44);
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});

function promiseAll(promises) {
  debugger;
  	let arr = [];
  let count = 0
  	promises.forEach((item, index)  => {
    	item.then(val => {arr[index]=val, count++;})
    })
    return new Promise(resolve => {
    	if(count === promises.length){
        	resolve(arr);
        }
    })
}

promiseAll([promise1, promise2, promise3]).then(val=>console.log(val))
// expected output: Array [3, 42, "foo"]

/* function log() {
  console.log("here");
}

let obj = debounce(log, 10);
obj();
obj();
obj(); */