2013-05-27 10 views
79

Kann mir jemand erklären, wie funktioniert $q.when in AngularJS? Ich versuche, wie $http Arbeit zu analysieren und fanden diese:

var promise = $q.when(config); 

Und hier ist Config Objekt von Chrome Konsole:

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 

Was als nächstes passiert? Wie wird dieses Objekt gelöst oder abgelehnt?

+0

$ q Geräte versprechen Muster seine nur einfache Wrapper um Rückrufe in Javascript .So, wenn Rückruf erfolgreich die Versprechen gelöst wird –

+1

@Ajaybeniwal abgefeuert wird, aber in diesem Fall Objekt übergeben, nicht um Rückruf. Wie es gelöst/abgelehnt wurde, wenn das Objekt übergeben wurde, nicht Callback? – SET

Antwort

98

Aufruf $q.when nimmt ein Versprechen oder jeden anderen Typ, wenn es kein Versprechen ist, dann wird es in eine Verheißung und Anruf Auflösung wickeln. Wenn Sie einen Wert an ihn übergeben, wird er nie zurückgewiesen.

Aus der Dokumentation:

Wraps ein Objekt, das ein Wert oder eine (3rd Party) sein könnte dann-able Versprechen in ein $ q Versprechen. Dies ist nützlich, wenn Sie mit einem Objekt arbeiten, das möglicherweise eine Zusage darstellt oder nicht, oder wenn das Versprechen von einer Quelle stammt, die nicht vertrauenswürdig ist.

+0

'Wenn Sie einen Wert übergeben '- aber was passiert, wenn ich ein Objekt passiere? – SET

+8

Wert, Objekt, Array ist es egal. –

+3

Was passiert, wenn ich eine Funktion übergebe, die ein Versprechen zurückgibt? Bedeutet es, dass der Callback dann das Versprechen Ergebnis param gesendet von resolve übergeben wird? –