$ q替换.when()和.finally()

时间:2018-12-11 15:02:59

标签: angularjs angular

我正在将AngularJS迁移到Angular

试图用Promise代替$ q

我有

$q.when(btn.onClick()).finally(test => {
    // code
})

我用下面的代码替换了它,不确定是否是确切的替换。

Promise.resolve(btn.onClick()).then(test => {
    // code
})

$q.when()看,我们可以将.resolve()用于.when()

但是.finally()的替代品是什么

3 个答案:

答案 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}并没有真正替代