J'observe que dans angular 2 il n'y a pas de bloc finalement pour promesse API
1 angulaire:
loadUsers() {
fetch('/api/users').then((response) => {
return response.json();
}).then((data) => {
this.users = data;
}).catch((ex) => {
console.error('Error fetching users', ex);
}).finally(() => {
this.userLoaded = true;
};
En supposant que je doive faire la même chose dans angular 2
Comment ajouter finalement block in angular 2 promise, à partir de maintenant il n'y a que then & catch blocks
disponible dans angular 2. Sinon, il n'y a aucun moyen d'ajouter du code de nettoyage après l'exécution de chaque méthode, où puis-je écrire du code pour bloquer les activités ?
Le moyen le plus simple consiste à utiliser le promise.finally shim .
npm install --save promise.prototype.finally
npm install --save-dev @types/promise.prototype.finally
import { shim } from 'promise.prototype.finally';
shim();
Vous devriez maintenant pouvoir utiliser finally
sur vos promesses.
Cela se fait généralement avec Promise.always. Cela prend une fonction et ajoute un nouveau .then
sur la promesse qui donne la même fonction pour les états de succès et d'échec. Si la fonction n'est pas disponible dans l'environnement basé sur les promesses donné, il est assez facile d'effectuer la polyfillature.
Promise.always = function(p, fn) {
return p.then(fn, fn);
}
usage:
var prom = fetch('/api/users').then...
Promise.always(prom, () => {
this.userLoaded = true;
});
return prom;