Angularjs,从工厂返回的未定义数据

Angularjs,从工厂返回的未定义数据,angularjs,Angularjs,只是一个简单的问题 我有一个工厂: 第一个日志条目返回所有对象,查询工作正常。我不明白为什么我的第二个日志返回我未定义 为什么我不能从第一个工厂返回数据?如果数据库查询是异步运行的,那么在执行$log.info之前,.then中的return语句不会被命中 我将修改如下: 数据库工厂: self.getAll = function() { return self.db.select('QuestionIndex',{"oltre":'IS NOT NULL'}).then(functi

只是一个简单的问题

我有一个工厂:

第一个日志条目返回所有对象,查询工作正常。我不明白为什么我的第二个日志返回我未定义


为什么我不能从第一个工厂返回数据?

如果数据库查询是异步运行的,那么在执行$log.info之前,.then中的return语句不会被命中

我将修改如下:

数据库工厂:

self.getAll = function() { 
    return self.db.select('QuestionIndex',{"oltre":'IS NOT NULL'}).then(function(results) {
      var records = [];
      for(var i=0; i < results.rows.length; i++){
        records.push(results.rows.item(i));
      };
      $log.info(records); 
      return records;
    }); 
  };

你打电话给DatabaseFactory.init了吗?我看不到它在任何地方被调用

它是异步运行的。如果您返回self.db.select,它将返回一个承诺,我想您可以用它做些什么。它返回undefined,因为在$log.info执行之前没有命中return语句。
angular.module('app.services')
  .factory('QuizCreate', ['DatabaseFactory','$log', function(DatabaseFactory,$log){
    self.generateQuiz = function() {
      $log.info(DatabaseFactory.getAll());
    };
    return self;
  }]);
self.getAll = function() { 
    return self.db.select('QuestionIndex',{"oltre":'IS NOT NULL'}).then(function(results) {
      var records = [];
      for(var i=0; i < results.rows.length; i++){
        records.push(results.rows.item(i));
      };
      $log.info(records); 
      return records;
    }); 
  };
self.generateQuiz = function() {
      DatabaseFactory.getAll().then(function(result){
        $log.info(result);
      });
};