Как работает Angular $q.when?

Может кто-нибудь объяснить мне, как $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

Вызов $q.when берет на себя обещание или любой другой тип, если это не обещание, оно завершает его обещанием и разрешает вызов. Если вы передадите ему значение, оно никогда не будет отклонено.

Из документов:

Обертывает объект, который может быть значением или (сторонним), а затем - обещанием в $q. Это полезно, когда вы имеете дело с объектом, который может или не может быть обещанием, или если обещание исходит от источника, которому нельзя доверять.