角度$ q服务的目的?

时间:2017-07-05 12:23:39

标签: angularjs q

我无法理解角度js中$q服务的使用。有人可以详细说明这个话题

angularjs中的$q服务是什么?我们怎样才能使用

1 个答案:

答案 0 :(得分:1)

我认为我写的关于$ q的文章可能对你有帮助。

$ q简介

$ q是一个角度定义服务。它与新的Promise()相同。但是,$ q通过增强开发人员可以用来更简单地执行复杂任务的附加功能,将事情提升到了一个新的水平。

这是使用$ q

创建承诺的示例
angular.module("app",[])
.controller("ctrl",function($scope,$q){
  var work = "resolve";
  var promise = $q(function(resolve, reject) {
    if (work === "resolve") {
        resolve('response 1!');
    } else {
        reject('Oops... something went wrong');
    }
  }); 
  promise.then(function(data) {
    alert(data)  

  }) 
})

<强> $ q.defer()

$q.defer()返回promise构造函数的实例。创建延迟对象后,您可以从该对象访问以下方法和属性

resolve(value) - 使用值解析派生的promise。如果该值是通过$ q.reject构造的拒绝,则承诺将被拒绝。

reject(reason) - 拒绝派生的承诺。这相当于通过$ q.reject构建的拒绝来解决它。

notify(value) - 提供有关承诺执行状态的更新。在承诺解决或拒绝之前,可以多次调用此方法。

promise - {Promise} - 与此延迟

相关联的承诺对象

<强>结论

使用$q来构建来自非承诺对象/回调的承诺,并使用$q.all()$q.race()来处理现有的承诺。