我試圖包裹getstream API中的角服務(廠)對象從承諾返回未定義
這裏是我的代碼:
.factory('FeedStream', function($http, $q) {
var client = stream.connect('xxxxxxxxxxx');
return {
feed : function() {
$http.get('/api/feed/auth/')
.success(function(auth) {
var user_feed = client.feed('user', auth.user, auth.token);
console.log(user_feed.get());
user_feed.get().then(function(data) {
console.log(data);
return data;
})
})
},
}
首先我從USER_ID和身份驗證令牌我服務器使用endpoint/api/feed/auth /。這些數據是以角度承諾返回的。
接下來,我使用此數據調用getstream api來獲取user_feed
對象。如果我返回這個對象(user_feed
),它在控制器中是未定義的。如果我將它打印到服務中的控制檯,它具有正確的值。我注意到,印刷後發生了半秒左右的事情。 爲什麼這個變量的賦值異步發生?
現在,如果我在調用console.log語句的user_feed
對象上調用get
方法,則會打印出Javascript承諾對象。如果我return user_feed.get()
它將undefined
返回給控制器。如果我在上面的代碼中的服務中調用它,然後返回promise then語句中的數據對象,它會將undefined
返回給控制器。但是,如果我打印data
對象,它具有正確的值。
爲什麼我無法從此服務中返回任何對象?我錯過了使用promise的一些基本方面嗎?
沒有你的函數實際上'return'什麼,你不能使用'success'而不是'then'。 – Bergi