Estaba leyendo este artículo sobre el encadenamiento de promesas: https://javascript.info/promise-chaining . No pude entender cómo el tiempo de ejecución de Javascript decide si tiene que transformar el resultado en una Promesa o no cuando se trata de un encadenamiento de Promesa. Refiriéndose al código a continuación, el Código 1 devuelve un número entero, pero Javascript tiene que devolver una promesa. El código 2 devuelve una promesa y Javascript puede devolver la misma promesa
Consultas:
################################# 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); }); })