Dme*_*hro 16 javascript angular-promise angular
我观察到在角度2中,promise API没有finally块
角1:
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;
};
Run Code Online (Sandbox Code Playgroud)
假设我必须在角度2中做同样的事情
如何在角度2承诺中添加finally块,截至目前只有then & catch blocks角度2可用.如果不是最后那么在执行每个方法之后有没有办法添加清理代码,我在哪里编写代码来做最后的阻塞活动?
Tom*_*cer 15
最简单的方法是使用promise.finally shim.
npm install --save promise.prototype.finallynpm install --save-dev @types/promise.prototype.finallyimport { shim } from 'promise.prototype.finally';
shim();
Run Code Online (Sandbox Code Playgroud)
你现在应该可以使用finally你的承诺了.
这通常是使用 Promise.always 完成的。这需要一个函数,并添加一个新的.then承诺,为成功和失败状态提供相同的函数。如果该函数在给定的基于 Promise 的环境中不可用,则很容易填充。
Promise.always = function(p, fn) {
return p.then(fn, fn);
}
Run Code Online (Sandbox Code Playgroud)
用法:
var prom = fetch('/api/users').then...
Promise.always(prom, () => {
this.userLoaded = true;
});
return prom;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6935 次 |
| 最近记录: |