angularjs – 是否有代理解析/拒绝对Angular $q延迟的承诺的快捷方式?

前端之家收集整理的这篇文章主要介绍了angularjs – 是否有代理解析/拒绝对Angular $q延迟的承诺的快捷方式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
鉴于一个未解决的延迟(dfd)和一个可能的承诺(承诺),可能会或可能不会延期,是否有办法将承诺“代理”到延期?

语义应如下:

promise.then(dfd.resolve,dfd.reject);

The $q documentation只提到处理被拒绝的承诺(此外,只有承诺以某种方式被拒绝):

defered.resolve(value) – resolves the derived promise with the value. If the value is a rejection constructed via $q.reject,the promise will be rejected instead.

这使得不清楚dfd.resolve(promise)是否有效/支持.此外,我不能使用$q.when(这确实需要时间)因为已经返回了deferred的承诺.

Angular版本是1.2.x.

是的,deferred.resolve承诺.

deferred.resolve(值)

使用待处理的承诺调用解决方案会导致承诺等待传递的承诺,履行其履行价值或拒绝其拒绝原因(或者如果传递的承诺确实如此,则永久保持待定).

使用被拒绝的承诺调用resolve会导致承诺被传递的promise的拒绝原因拒绝.

用满足的承诺呼叫决心会导致承诺通过履行承诺的履行价值来实现.

使用非承诺值调用resolve会导致使用该值履行承诺.

From the 07000

要回答你问题的另一部分:

“”这使得不清楚dfd.resolve(promise)是否有效/支持.此外,我不能使用$q.when(这确实需要时间)因为已经返回了deferred的承诺.“”

deferred.promise创建的承诺可以提供给更多的收件人.每个收件人都可以在该承诺上调用.then方法.承诺只能解决一次(无论是值还是错误).但是容器可以被更多的消费者阅读.

将promise视为一个值的容器,将来可以通过.then,.catch和.finally方法获得.您可以多次访问容器,但其内容在结算时是不可变的.

$http服务中.success和.error方法的弃用

AngularJS团队在他们新发现的智慧中决定弃用.success和.error方法.那些方法都是错误的,我说好了解决.

有关.success和.error方法的弃用(或我应该说失败)的更多信息,请访问最新的AngularJS $http Service API Docs.

我们应该避免使用.success和.error方法,并从现在开始学习使用.then,.catch和.finally.

OP引用的$q服务参考日期已过时.有关最新版本,请访问AngularJS $q Service API Docs.

旧版AngularJS v1.2的更新

我做了一些spelunking in the AngularJS Github.遗留的$http服务创建了一个$q的承诺(L750),随后附加了错误的.success方法(L769)错误的.error方法(L776).

这意味着人们坚持使用旧版本的AngularJS可以开始迁移到.then,.catch和.finally方法.

两个具有相同$http承诺的消费者的示例.

//Producer
var httpPromise = $http.get(url);

//Consumer #1
httpPromise.then (function (response) {
                vm1.data = response.data;
        }) .catch (function (err) {
                //check for error
        });

//Consumer #2
httpPromise.then (function (response) {
                vm2.data = response.data;
        }) .catch (function (err) {
                //check for error
        });

请注意,.then方法返回的数据与.success方法不同.

消费者也应检查错误.

因此,即使是传统AngularJS的用户也可以开始编写.success和.error免费代码.

原文链接:https://www.f2er.com/angularjs/143334.html

猜你在找的Angularjs相关文章