Angular promises `all` 方法 returns `undefined`

Angular promises `all` method returns `undefined`

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

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

当我调用这个函数时,它 returns 预期的数据如下:

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];
});

我是不是漏掉了什么?

您必须return来自回调的数据

这样试试

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

一定是这样的:

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'];

});