w3schools w3school tutorial promises node learn for ejemplo dummies javascript jquery es6-promise

javascript - w3school - ¿Cuál es el equivalente de ES6 Promise de jQuery Deferred''s ''always''?



tutorial promises (2)

Creo que lo siguiente es lo que estás buscando:

Promise.resolve(getUser("foo")) .then(handleSuccess, handleError) .then(tidyUp)

tidyUp siempre será llamado. Vea el siguiente jsbin para el ejemplo completo: http://jsbin.com/lujubu/edit?html,js,console,output

Esta pregunta ya tiene una respuesta aquí:

Tengo algo como lo siguiente:

getUser("foo").then(handleSuccess, handleError).always(tidyUp);

getUser devuelve un objeto jQuery Deferred.

Entiendo de este artículo que puedo convertir el objeto Diferido en una Promesa nativa utilizando Promise.resolve , por lo que puedo escribir

Promise.resolve(getUser("foo")) .then(handleSuccess) .catch(handleError)

Sin embargo, la API Promise no ofrece un método always , así que me pregunto cómo se debe manejar eso.

¿Es como sigue?

Promise.resolve(getUser("foo")) .then(handleSuccess) .then(tidyUp) .catch(handleError) .then(tidyUp)


Use su función always como el controlador para resolve y reject para asegurarse de que siempre se llamará.

function getUser(result) { switch (result) { case ''good'': return Promise.resolve(); case ''bad'': return Promise.reject(); case ''ugly'': return new Promise(() => { throw new Error() }) } } function handleSuccess() { console.log(''success'') } function handleError() { console.log(''error'') } function tidyUp() { console.log(''all tidy now'') } Promise.resolve(getUser(''good'')) .then(handleSuccess) .catch(handleError) .then(tidyUp, tidyUp); Promise.resolve(getUser(''bad'')) .then(handleSuccess) .catch(handleError) .then(tidyUp, tidyUp); Promise.resolve(getUser(''ugly'')) .then(handleSuccess) .catch(handleError) .then(tidyUp, tidyUp); // success // error // error // all tidy now // all tidy now // all tidy now

Promesa API de referencia