Promises chaining

by GarfieldKlon

JavaScript

let a = function() {
	return new Promise( (resolve, reject) => {
  	setTimeout(() => resolve(1), 300);
  });
}
let b = function() {
	return new Promise( (resolve, reject) => {
  	setTimeout(() => resolve(2), 200);
  });
}
let c = function() {
	return new Promise( (resolve, reject) => {
  	setTimeout(() => resolve(3), 100);
  });
}

a().then( result => console.log(result))
.then( () => b().then( result => console.log(result)))
.then( () => c().then( result => console.log(result)));

let d = function() {
	return a()
  	.then( () => b().then( () => c() ) );
}

d().then( result => console.log("d = " + result) )


/*
new Promise(function(resolve, reject) {

  setTimeout(() => resolve(1), 1000); // (*)

}).then(function(result) { // (**)

  console.log(result); // 1
  return result * 2;

}).then(function(result) { // (***)

  console.log(result); // 2
  return result * 2;

}).then(function(result) {

  console.log(result); // 4
  return result * 2;

});
*/