2013-08-28 51 views
0

我注意到,如果我做了以下的物體V行,它實際上記錄了一個承諾,該承諾的值爲$$v,附加了由ajax請求返回的所有json數據。

所以它並不實際將promise對象轉換爲返回的json數據,而是將其作爲$$v變量添加。

有什麼辦法可以改變這種行爲並讓對象完全轉化爲結果嗎?

回答

1

$ http.get已經返回一個承諾,所以你可以這樣做:

function getObject() 
{ 
    return $http.get('my_url') 
} 

在下面的代碼,執行console.log不會等待解決的承諾,它只是打印出prommise對象:

var myItem = getObject(); 
console.log(myItem); 

相反,你需要傳遞一個回調函數:

getObject().success(function(data){ 
    $scope.myVar = data; 
} 
+0

那不是我的問題,我的問題是,有沒有辦法在ajax請求完成之後,承諾完全變成了請求的返回值?例如'item = $ http.get(); alert(item.value);' –

+0

看問題中的代碼,我認爲這是正確的答案。當'console.log'被調用並且$$ v應該爲空時,promise不會被解析。但是,一旦您在控制檯中展開對象,它就會被加載並填充$$ v值。無論如何,console.log應該在解析之後發生,而不是在它之前,才能實際訪問響應。 – package

+0

@ClickUpvote檢查更新後的答案,您可以在解決承諾後將數據分配給變量, –