【问题标题】:Angular $HTTP and PromiseAngular $HTTP 和 Promise
【发布时间】: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


【解决方案1】:

通过事件数组(即this.event),如果你想指的是promise数组,那么它应该是这样的

this.events = this.events.concat([defer.promise]);this.events = this.events.push(defer.promise) 然后使用 $q.all(this.events).then(...) 解决所有问题。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 2017-10-31
    • 2015-10-21
    • 2016-11-20
    • 2015-05-18
    • 1970-01-01
    • 2018-08-19
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多