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

waz*_*day 3 javascript angularjs angular-promise

我已经使用该$q服务与Angular建立了一个承诺.

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

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

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

var promise2 = api.get().then(function(data){
    console.log(data); //logs test
});
Run Code Online (Sandbox Code Playgroud)

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

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

我在这里错过了什么吗?

Ani*_*bhi 6

您必须从回调中返回数据

试试这样吧

var promise1 = function(){
  return api.get().then(function(data){
      return data;
  });
}
Run Code Online (Sandbox Code Playgroud)