¿Cómo funciona Angular $ q.when?

95

¿Alguien puede explicarme cómo $q.whenfunciona en AngularJS? Estoy tratando de analizar cómo $httpfunciona y encontré esto:

var promise = $q.when(config);

Y aquí está el objeto de configuración de la consola de 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

¿Qué pasa después? ¿Cómo se resuelve o rechaza este objeto?

CONJUNTO
fuente
$ q implementa patrones de promesa, su simple envoltura alrededor de devoluciones de llamada en javascript. Entonces, cuando la devolución de llamada se activa con éxito, las promesas se resuelven
Ajay Beniwal
1
@Ajaybeniwal, pero en este caso el objeto pasó, no la devolución de llamada. ¿Cómo se resolvió / rechazó en caso de que el objeto pasara, no la devolución de llamada?
SET

Respuestas:

113

Llamar $q.whenrequiere una promesa o cualquier otro tipo, si no es una promesa, la envolverá en una promesa y llamará a resolver. Si le pasa un valor, nunca será rechazado.

De los documentos:

Envuelve un objeto que puede ser un valor o una promesa (de un tercero) que puede entonces convertirse en una promesa $ q. Esto es útil cuando se trata de un objeto que podría ser una promesa o no, o si la promesa proviene de una fuente en la que no se puede confiar.

Derek Ekins
fuente
If you pass a value to it- pero ¿y si paso objeto?
ESTABLECIDO
11
valor, objeto, matriz es todo lo mismo.
Derek Ekins
3
¿Qué pasa si paso una función que devuelve una promesa? ¿Significa que a la devolución de llamada se le pasará el parámetro de resultado de la promesa enviado por resolución?
Onur Topal
3
Onur, cuando dices pasar una función, ¿te refieres como un objeto de función:, $q.when(myfunc)o invocando la función que estás pasando $q.when(myfunc()):? No sé exactamente qué hará el primero ... el último invocará myfunc()primero y pasará el valor de la promesa devuelta a .when().
jrista