我正在尝试将 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;
})
})
},
}
首先,我使用端点 /api/feed/auth/ 从我的服务器获取 user_id 和 auth 令牌。该数据以角度承诺的形式返回。
接下来,我使用这些数据调用 getstream api 来获取user_feed
对象。如果我返回这个对象 ( user_feed
),它在控制器中是未定义的。如果我将它打印到服务中的控制台,它具有正确的值。我注意到打印发生在返回后半秒左右。为什么这个变量的赋值是异步发生的?
现在,如果我在 console.log 语句中调用get
此user_feed
对象的方法,则会打印出一个 Javascript 承诺对象。如果我return user_feed.get()
返回undefined
控制器。如果我像上面的代码一样在服务中调用它,并在 promise then 语句中返回数据对象,它会返回undefined
到控制器。但是,如果我打印该data
对象,它具有正确的值。
为什么我不能从该服务返回任何对象?我错过了使用承诺的一些基本方面吗?