一尘不染

如何获得已经解决的承诺价值?

angularjs

我保证会绑定到我的UI中。当承诺解决并且UI元素呈现后,我可以单击该UI元素。在我处理点击的控制器代码中,我要根据诺言的价值行事。至此,在我的角度代码中,我已经知道诺言已经解决了..但是当我想要获得价值时,它仍然是诺言。

鉴于我知道必须兑现承诺,获得承诺价值的最佳方法是什么?


阅读 232

收藏
2020-07-04

共1个答案

一尘不染

承诺永远是诺言-
那就应该如此。尽管可以将诺言直接绑定到视图,但我通常不鼓励这种做法,因为它缺乏透明度,并且可能导致视图闪烁。更好的解决方案是在then调用中分配作用域值:

myService.then(function( val ) {
  $scope.val = val;
});

$scope.val准备好,它总是可以直接视为值-因为它是。

就是说,如果您想直接进行承诺分配,则只需将其视为承诺即可;也就是说,您需要致电promise.then(function () { ... });。这似乎带来了不便,但这实际上证明了诺言的强大程度。

如果您需要有关承诺的更多信息,请在最近的Google+环聊中对它们进行了介绍(并提供了代码示例),其中涵盖了AngularJS的Promise的优点,常见用法和最佳实践:AngularJS环聊-
承诺,承诺承诺,承诺
。永无止境的诺言链的想法已得到特别解决,尽管我没有时间代码。

希望这可以帮助!

2020-07-04