lau*_*ent 83 javascript finally promise deferred angularjs
在我的Angular.js应用程序中,我正在运行一些异步操作.在它开始之前我用模态div覆盖应用程序,然后一旦操作完成,我需要删除div,无论操作是否成功.
目前我有这个:
LoadingOverlay.start();
Auth.initialize().then(function() {
LoadingOverlay.stop();
}, function() {
LoadingOverlay.stop(); // Code needs to be duplicated here
})
Run Code Online (Sandbox Code Playgroud)
它运作良好,但我更喜欢像这个伪代码一样更清洁:
LoadingOverlay.start();
Auth.initialize().finally(function() { // *pseudo-code* - some function that is always executed on both failure and success.
LoadingOverlay.stop();
})
Run Code Online (Sandbox Code Playgroud)
我想这是一个相当普遍的问题,所以我想这是可以做到,但不能找到文档中任何事情.有什么想法可以吗?
lau*_*ent 162
该功能已在此拉取请求中实现,现在是AngularJS的一部分.它最初被称为"始终",然后重命名为finally,所以代码应如下所示:
LoadingOverlay.start();
Auth.initialize().then(function() {
// Success handler
}, function() {
// Error handler
}).finally(function() {
// Always execute this on both error and success
});
Run Code Online (Sandbox Code Playgroud)
请注意,由于finally是保留关键字,因此可能需要将其设置为字符串,以便在某些浏览器(例如IE和Android浏览器)上不会中断:
$http.get('/foo')['finally'](doSomething);
Run Code Online (Sandbox Code Playgroud)
我正在使用Umbraco版本7.3.5后端与AngularJS版本1.1.5并找到此线程.当我实施批准的答案时,我得到了错误:
xxx(...).then(...).finally不是函数
然而,做了什么工作always.如果使用旧版AngularJS的其他人发现此线程而无法finally使用此代码
LoadingOverlay.start();
Auth.initialize().then(function() {
// Success handler
}, function() {
// Error handler
}).always(function() {
// Always execute this on both error and success
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66148 次 |
| 最近记录: |