在我的Angular.js应用程序中,我正在运行一些异步操作。在它开始之前,我使用一个模态div覆盖应用程序,然后一旦操作完成,无论成功与否,我都需要移除该div。
目前我的代码是这样的:
目前我的代码是这样的:
LoadingOverlay.start();
Auth.initialize().then(function() {
LoadingOverlay.stop();
}, function() {
LoadingOverlay.stop(); // Code needs to be duplicated here
})
它工作得很好,但我更喜欢像这个伪代码一样更简洁的东西:
LoadingOverlay.start();
Auth.initialize().finally(function() { // *pseudo-code* - some function that is always executed on both failure and success.
LoadingOverlay.stop();
})
我认为这是一个相当普遍的问题,所以我想它可能可以解决,但在文档中找不到任何相关内容。有没有想法它是否可以完成?
initialize()
失败,你仍然需要声明一个“成功”函数和一个“失败”函数,并在其中复制代码。 - laurent.then()
的Promise - 可以在这里查看"The Promise API" here。唯一的自由是拥有一个.then()
或链接多个.then()
。你不是第一个希望有更广泛的Promise API的人 - 你想要的功能已经在这里正式请求here。 - Beetroot-Beetrootalways(callback)
。我们现在必须使用finally
。我想知道为什么保留字finally
比always
更好。 - Aleynaalways
,因为这是jQuery使用的方式,并因为finally
是一个保留的JS关键字。最终,他们似乎还是选择了finally
,但是有一个警告:由于“finally”是JavaScript中的保留字,并且ES3不支持保留关键字作为属性名称,因此您需要像“promise['finally'](callback)”一样调用该方法以使您的代码兼容IE8。
为什么不呢,但这似乎比必要的麻烦些。 - laurentfinally
。 - laurent