var p1 = new Promise((resolve, reject) => { resolve('p1'); }); var p2 = new Promise((resolve, reject) => { resolve('p2'); }); Promise.all([ p1.finally(() => { console.log("p1 completed"); }), p2.finally(() => { console.log("p2 completed"); }), ]).then(values => { console.log(values[0]); console.log(values[1]); }).finally(() => { console.log("all() completed");Creo que solo he visto ejemplos en la web con un solo .finally() al final [1]: https://i.stack.imgur.com/HeQV8.png
Claro, finally es un método de promesa encadenable como catch (con la única diferencia de que su devolución de llamada no toma un parámetro). Puedes usarlo tantas veces como quieras, con cualquier promesa.
Promise.all([ p1.finally(() => { console.log("p1 completed"); }), p2.finally(() => { console.log("p2 completed"); }), ]).finally(() => { console.log("all() completed"); })Puede encadenar tantas llamadas .finally() como desee en cualquier promesa.
(Promise.all() devuelve una nueva promesa, por lo que esta regla también se aplica aquí).
Ejecute esto, y debería ver el registro de los 3 comentarios.
Promise.resolve(). finally(() => console.log('Finally #1')). finally(() => console.log('Finally #2')). finally(() => console.log('Finally #3'))