// https://javascript.info/promise-chaining // .then() returns a new Promise when you do "return", // internally calling resolve(). new Promise(function(resolve, reject) { setTimeout(() => resolve(1), 1); }).then(function(result) { console.log(result); return result * 2; }).then(function(result) { console.log(result); return result * 2; }).then(function(result) { console.log(result); return result * 2; }); /* It will print 1 2 4 */ /* It means that "then" is internally implemented roughly as follows: function then(f){ return new Promise(function(resolve, reject) { resolve(f()); }) } */ // Another example: fetch('http://www.fsf.org') // .then below runs when the remote server responds .then(function(response) { // response.text() returns a new promise that resolves with the full response text // when it loads return response.text(); }) .then(function(text) { // ...and here's the content of the remote file console.log(text); });