我正在将AngularJS迁移到Angular
试图用Promise代替$ q
我有
$q.when(btn.onClick()).finally(test => {
// code
})
我用下面的代码替换了它,不确定是否是确切的替换。
Promise.resolve(btn.onClick()).then(test => {
// code
})
从$q.when()看,我们可以将.resolve()
用于.when()
但是.finally()的替代品是什么
答案 0 :(得分:1)
首先将组件模板按钮单击绑定到模板逻辑
<button (click)="onClick()">Click</button>
onClick() {}
然后,您可以将Promise.all
用于多个承诺,或将.then
用于单个承诺。
尽管,如果我可以建议的话,在迁移时,您应该考虑使用Observable,因为它们比Promise更强大,并且与Angular集成在一起。
Here is one of my previous answers可以快速开始使用Observables。
答案 1 :(得分:0)
由于您提到要迁移,因此,在可能的情况下,首选使用可观察变量。从文档中:
您通常可以使用可观察变量,而不是使用诺言异步传递值。同样,可观察对象可以代替事件处理程序。最后,由于可观测变量提供了多个值,因此可以在可用于数组构建和操作的地方使用它们。
https://angular.io/guide/comparing-observables
话虽如此,最后还是应许API的一部分,可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally
答案 2 :(得分:-1)
//意识到这不是问题。我不好!
您可以使用
.then(function(){
})
在您所知的范围内,{p> {p}并没有真正替代