Actualmente tengo algunas funciones que devuelven promesas como las siguientes:
function action_one(){ return new Promise((resolve, reject)->{ ... }); }Quiero poder esperar en uno antes de hacer la próxima promesa sin anidarlos. Había buscado algunas soluciones, una de las cuales es PromiseAll() pero no parece hacerlo en orden. Otra solución fue hacer lo siguiente:
promise.then(result =>{ action }.then(result =>{ action }.then(result =>{ action }.then(result =>{ action }.then(result =>{ etc.que no estoy seguro de que funcione para mi problema, pero no parece compactable.
¿Cuál sería la mejor práctica en esta situación?
Editar:
No estoy seguro de cómo usar la cadena .then con múltiples promesas como:
promise.then(result =>{ action }promise.then(result =>{ action }promise.then(result =>{ action }promise.then(result =>{ action }promise.then(result =>{ etc.No me da el resultado que espero
Encontré mi solución:
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); }); }).then(function(result) { alert(result); // 4 });Necesitaba devolver la promesa de encadenarlos, por eso no funcionaba. Fuente: https://javascript.info/promise-chaining