Angular承诺' all '方法返回' undefined '



我已经使用$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];
});

我错过了什么吗?

你必须从回调返回数据

试试这样

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

必须像这样:

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

那么,promise的类型是"promise",你可以在$q.all()中使用它们。

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

});

相关内容

  • 没有找到相关文章

最新更新