w3schools tipos sincronas promises promesas funciones encadenar encadenamiento anidadas javascript jquery-deferred promise

tipos - promises javascript w3schools



Espere hasta que la promesa y las funciones anidadas estén completas (1)

Estoy devolviendo una promesa de una función como esta:

resultPromise = dgps.utils.save(opportunity, ''/api/Opportunity/Save'', opportunity.dirtyFlag).then(function () { self.checklist.saveChecklist(opportunity).then(function () { self.competitor.save(opportunity.selectedCompetitor()).then(function ... etc. return resultPromise;

Digamos que la función anterior se llama guardar.

En la función de llamada, quiero esperar a que se complete toda la cadena y luego hacer algo. Mi código allí se ve así:

var savePromise = self.save(); savePromise.then(function() { console.log(''aftersave''); });

El resultado es que ''aftersave'' se envía a la consola mientras la cadena de promesas aún se está ejecutando.

¿Cómo puedo hacer algo una vez completa toda la cadena?


En lugar de anidar las promesas, encadenalas.

resultPromise = dgps.utils.save(opportunity, ''/api/Opportunity/Save'', opportunity.dirtyFlag).then(function () { return self.checklist.saveChecklist(opportunity); }).then(function () { return self.competitor.save(opportunity.selectedCompetitor()); }).then(function () { // etc }); // return a promise which completes when the entire chain completes return resultPromise;