Angular $ q.when如何运作?

时间:2013-05-27 10:07:51

标签: angularjs deferred q

有人可以解释一下$q.when在AngularJS中的工作原理吗? 我正在尝试分析$http如何工作并发现这个:

var promise = $q.when(config);

这是来自Chrome控制台的配置对象:

Object {transformRequest: Array[1], transformResponse: Array[1], cache: Object, method: "GET", url: "/schedule/month_index.html"…}
cache: Object
headers: Object
method: "GET"
transformRequest: Array[1]
transformResponse: Array[1]
url: "/schedule/month_index.html"
__proto__: Object

接下来会发生什么?该对象如何得到解决或拒绝?

1 个答案:

答案 0 :(得分:106)

调用$q.when接受承诺或任何其他类型,如果它不是承诺,那么它将把它包装在一个承诺和调用解析中。如果你传递一个值,它永远不会被拒绝。

来自文档:

  

将可能是值的对象或(第三方)包装成$ q承诺。当您处理可能会或可能不是承诺的对象,或者承诺来自不可信任的源时,这非常有用。