【发布时间】:2014-08-15 21:05:33
【问题描述】:
我无法在 HTTP.get 函数中实现我的承诺。当我尝试 console.log 输出时,我得到的只是 promise 函数?
我有兴趣获取我的 api 提供的事件数组。
eventApp.factory('LoadEvents', function($http, $q) {
var LoadEvents = function() {
this.events = [];
this.busy = false;
this.after = '';
};
LoadEvents.prototype.nextPage = function() {
if (this.busy) return;
this.busy = true;
var defer = $q.defer();
$http.get('URL inserted here').then(function(response){
defer.resolve(response.data);
});
this.events = this.events.concat(defer.promise);
console.log(this.events);
};
这应该是一个非常基本的承诺,但我不明白为什么我不能接收数组而不是整个承诺函数?
【问题讨论】:
-
可能是因为您在将承诺分配给事件之前记录了它。
-
您无法获取数组,因为它是异步加载的!承诺不是价值本身。
-
好的,我明白了。但真的看不出我如何在 $http.get 函数中将 this.events 设置为从 api 接收到的数据?
-
$http 返回一个承诺。您可以只使用那个而不是制作一个新的。
标签: javascript angularjs angular-promise