Come funziona Angular $ q. Quando funziona?


95

Qualcuno può spiegarmi come $q.whenfunziona in AngularJS? Sto cercando di analizzare come $httpfunziona e ho trovato questo:

var promise = $q.when(config);

Ed ecco l'oggetto di configurazione dalla 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?


$ q implementa i pattern di promessa il suo semplice wrapper attorno ai callback in javascript. Quindi, quando il callback viene attivato con successo, le promesse vengono risolte
Ajay Beniwal

1
@Ajaybeniwal, ma in questo caso l'oggetto è passato, non la richiamata. Come è stato risolto / rifiutato nel caso in cui l'oggetto fosse passato, non richiamato?
SET

Risposte:


113

La chiamata $q.whenrichiede una promessa o qualsiasi altro tipo, se non è una promessa, la avvolgerà in una promessa e chiamerà risoluzione. Se gli si passa un valore, non verrà mai rifiutato.

Dai documenti:

Avvolge un oggetto che potrebbe essere un valore o una promessa (di terze parti) quindi disponibile in una promessa $ q. Ciò è utile quando si ha a che fare con un oggetto che potrebbe o non potrebbe essere una promessa o se la promessa proviene da una fonte di cui non ci si può fidare.


If you pass a value to it- ma cosa succede se passo oggetto?
SET

11
valore, oggetto, array è lo stesso.
Derek Ekins

3
cosa succede se passo una funzione che restituisce una promessa? significa che il callback di esso verrà passato al parametro del risultato della promessa inviato dalla risoluzione?
Onur Topal

3
Onur, quando dici passare una funzione, intendi come funzione oggetto $q.when(myfunc):, o invocando la funzione il tuo passaggio $q.when(myfunc()):? Non so esattamente cosa farà il primo ... il secondo invocherà per myfunc()primo e passerà il valore della promessa restituita a .when().
jrista
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.