I was reading this article on promise chaining : https://javascript.info/promise-chaining . Couldn't understand how Javascript runtime decides if it has to transform result into a Promise or not when Promise chaining is involved. Referring the code below Code 1 returns a integer but Javascript has to return a promise. Code 2 returns a Promise and Javascript can return the same promise
Queries:
################################# Code1 ####################################################
new Promise(function(resolve, reject) {
setTimeout(() => resolve(1), 1000); // (*)
}).then(function(result) { // (**)
alert(result); // 1
return result * 2;
}).then(function(result) { // (***)
alert(result); // 2
return result * 2;
})
########################################### Code2 ########################################
new Promise(function(resolve, reject) {
setTimeout(() => resolve(1), 1000);
}).then(function(result) {
alert(result); // 1
return new Promise((resolve, reject) => { // (*)
setTimeout(() => resolve(result * 2), 1000);
});
}).then(function(result) { // (**)
alert(result); // 2
return new Promise((resolve, reject) => {
setTimeout(() => resolve(result * 2), 1000);
});
})