Angular promises`all`方法返回`undefined`

时间:2015-09-03 14:35:16

标签: javascript angularjs angular-promise

我已使用$q服务与Angular建立了承诺。

var get = function() {
    var defer = $q.defer();
    setTimeout(function() {
        defer.resolve('test');
    }, 1000);
    return defer.promise;
}

当我调用此函数时,它会返回预期的数据,如下所示:

var promise1 = api.get().then(function(data){
    console.log(data); //logs test
});

var promise2 = api.get().then(function(data){
    console.log(data); //logs test
});

但是当我使用all方法时,我得到一个包含undefined两次的数组。

$q.all([promise1, promise2]).then(function(data){
    console.log(data); //logs [undefined, undefined];
});

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:6)

您必须从回调

返回数据

试试这个

var promise1 = function(){
  return api.get().then(function(data){
      return data;
  });
}

答案 1 :(得分:1)

必须这样:

var promise1 = api.get();
var promise2 = api.get();

然后,promise1和promise2的类型为“promise”,您可以在$ q.all()中使用它们。

$q.all([promise1, promise2]).then(function(data){
console.log(data); //logs ['test', 'test'];

});