2013-05-27 14 views
79

Qualcuno può spiegarmi come funziona $q.when in AngularJS? Sto cercando di analizzare come $http lavoro e abbiamo trovato questo:

var promise = $q.when(config); 

E qui è oggetto di configurazione da console 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 

cosa succede dopo? Come viene risolto o rifiutato questo oggetto?

+0

attrezzi $ q promettono modelli il suo solo semplice wrapper per le richiamate in javascript .Così quando viene richiamata con successo sparato il promesse viene risolto –

+1

@Ajaybeniwal, ma in questo caso oggetto passato, non richiamata. Come è stato risolto/rifiutato in caso di passaggio dell'oggetto, non di richiamata? – SET

risposta

98

Chiamare il numero $q.when richiede una promessa o qualsiasi altro tipo, se non è una promessa, lo avvolgerà in una promessa e risolverà le chiamate. Se si passa ad un valore, non verrà mai rifiutato.

Dalla documentazione:

avvolge un oggetto che potrebbe essere un valore o un (3a parte) promessa allora in grado in una promessa $ q. Ciò è utile quando hai a che fare con un oggetto che potrebbe o non potrebbe essere una promessa, o se la promessa proviene da una fonte che non può essere considerata attendibile.

+0

'Se si passa un valore ad esso' - ma cosa succede se passaggio oggetto? – SET

+8

valore, oggetto, matrice è tutto uguale. –

+3

cosa succede se passo una funzione che restituisce una promessa? vuol dire che il callback di questo sarà passato al parametro di risultato promesso per decisione? –