sequence

by Artem

Babel + JSX

function sequence (fn1, fn2, fn3) {
	fn1()
  	.then (() => {
    	fn2()
      	.then(() => fn3())
    });
} 

function sequence2 () {
	for (let i = 1; i < arguments.length; i++) {
  	arguments[i]()
    	.then(() => {
      
      	return arguments[i + 1]();
      });
  }
}

function asyncFn1() {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log(1);
      resolve();
    }, 1000);
  });
}

function asyncFn2() {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log(2);
      resolve();
    }, 2000);
  });
}

function asyncFn3() {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log(3);
      resolve();
    }, 3000);
  });
}

sequence2(asyncFn2, asyncFn3, asyncFn1);