我试图包裹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