0
我注意到,如果我做了以下的物體V行,它實際上記錄了一個承諾,該承諾的值爲$$v
,附加了由ajax請求返回的所有json數據。
所以它並不實際將promise對象轉換爲返回的json數據,而是將其作爲$$v
變量添加。
有什麼辦法可以改變這種行爲並讓對象完全轉化爲結果嗎?
我注意到,如果我做了以下的物體V行,它實際上記錄了一個承諾,該承諾的值爲$$v
,附加了由ajax請求返回的所有json數據。
所以它並不實際將promise對象轉換爲返回的json數據,而是將其作爲$$v
變量添加。
有什麼辦法可以改變這種行爲並讓對象完全轉化爲結果嗎?
$ 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;
}
那不是我的問題,我的問題是,有沒有辦法在ajax請求完成之後,承諾完全變成了請求的返回值?例如'item = $ http.get(); alert(item.value);' –
看問題中的代碼,我認爲這是正確的答案。當'console.log'被調用並且$$ v應該爲空時,promise不會被解析。但是,一旦您在控制檯中展開對象,它就會被加載並填充$$ v值。無論如何,console.log應該在解析之後發生,而不是在它之前,才能實際訪問響應。 – package
@ClickUpvote檢查更新後的答案,您可以在解決承諾後將數據分配給變量, –