2013-05-27 46 views
79

有人可以解釋我如何在AngularJS中使用$q.when? 我試圖分析如何$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 

接下來會發生什麼?該對象如何得到解決或拒絕?

+0

$ Q器具答應模式及其周圍的JavaScript。所以回調時,回調成功地打響了承諾只是簡單的包裝得到解決 –

+1

@Ajaybeniwal,但在傳遞這種情況下對象,而不是回調。在對象通過而不是回調的情況下,它如何解決/拒絕? – SET

回答

98

打電話$q.when承諾或任何其他類型,如果它不是一個承諾,然後它會包裝在一個承諾和呼籲解決。如果你傳遞一個值,它永遠不會被拒絕。

從文檔:

裹的對象可能是一個值或(第三方)當時能承諾爲$ Q承諾。當你處理可能或不可能成爲承諾的對象時,或者承諾來自不可信任的來源時,這很有用。

+0

'如果你傳遞一個值 - 但是如果我傳遞了對象? – SET

+8

值,對象,數組都是一樣的。 –

+3

如果我傳遞一個返回承諾的函數,該怎麼辦?這是否意味着它的回調將通過解析傳遞的承諾結果參數發送? –