Javascript 如何在angularjs中读取数组对象

Javascript 如何在angularjs中读取数组对象,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我得到了要读取的数组对象: 这是我的示例代码: $scope.obj_qst_local_study_main = tbl_qst_local_study_main.all(); $scope.quesion_id_allocated = $scope.obj_qst_local_study_main[0]; $timeout(function(){ console.log('----------all objects----------'); console.log($sco

我得到了要读取的数组对象:

这是我的示例代码:

$scope.obj_qst_local_study_main = tbl_qst_local_study_main.all();
$scope.quesion_id_allocated = $scope.obj_qst_local_study_main[0];
$timeout(function(){
    console.log('----------all objects----------');
    console.log($scope.obj_qst_local_study_main);
    console.log('-----------one object-----------');
    console.log($scope.quesion_id_allocated);
},200);
当我使用:

$scope.obj_qst_local_study_main[0];
结果是:
未定义


我的angularjs服务:

.service('tbl_qst_local_study_main', function($cordovaSQLite, DATABASE_LOCAL_NAME){
            var self = this;
            var qst_local_study_main_array = [];
            self.all = function() {
              var db = $cordovaSQLite.openDB({name: DATABASE_LOCAL_NAME,location:'default'});
                    $cordovaSQLite.execute(db, "SELECT * FROM qst_local_study_main")
                            .then(function (res) {
                                console.log('--------Successfully read from qst_local_study_main---------');
                                for (var i = 0; i < res.rows.length; i++) {
                                    qst_local_study_main_array.push(res.rows.item(i));
                                }
                            },
                                function (err) {
                                    console.log(err);
                                });
                    return qst_local_study_main_array;
            };
        })
.service('tbl\u qst\u local\u study\u main',函数($cordovaSQLite,DATABASE\u local\u NAME){
var self=这个;
var qst_local_study_main_array=[];
self.all=函数(){
var db=$cordovaSQLite.openDB({name:DATABASE\u LOCAL\u name,location:'default'});
$cordovaSQLite.execute(db,“从qst\U本地研究\U主目录中选择*)
.然后(功能(res){
console.log('----从qst_local_study_main----------成功读取);
对于(var i=0;i
您的服务应该返回一个
承诺
。这是一种极为常见的情况,因为(请不要生气)人们不明白
承诺是如何起作用的

请在internet上搜索类似以下内容的文章:

tl;dr您的服务应该返回一个
承诺
。在您的情况下,
$cordovaSQLite.execute
则可以通过链接
然后
s来正确处理响应。您也不需要超时。在这里使用超时是非常糟糕的

tbl_qst_local_study_main.all()
  .then(function(result) {
    console.log(result);
  })

您的服务应该返回一个
承诺
。这是一种极为常见的情况,因为(请不要生气)人们不明白
承诺是如何起作用的

请在internet上搜索类似以下内容的文章:

tl;dr您的服务应该返回一个
承诺
。在您的情况下,
$cordovaSQLite.execute
则可以通过链接
然后
s来正确处理响应。您也不需要超时。在这里使用超时是非常糟糕的

tbl_qst_local_study_main.all()
  .then(function(result) {
    console.log(result);
  })


您需要显示一些代码。例如,什么是
tbl_qst_local_study_main.all()
do?所以我猜测
tbl\u qst\u local\u study\u main.all()
是一个异步调用。因此,当您分配第二行中的第一项时,调用尚未完成。将显示一个返回值的野生异步函数。因此,我需要执行@SebastianSebald?put$scope.quesion\u id\u allocated=$scope.obj\u qst\u local\u study\u main[0];在$timeout中,您需要显示一些代码。例如,什么是
tbl_qst_local_study_main.all()
do?所以我猜测
tbl\u qst\u local\u study\u main.all()
是一个异步调用。因此,当您分配第二行中的第一项时,调用尚未完成。将显示一个返回值的野生异步函数。因此,我需要执行@SebastianSebald?put$scope.quesion\u id\u allocated=$scope.obj\u qst\u local\u study\u main[0];$timeout
$timeout
的内部异常糟糕?哦,不..所以我需要使用
promise
。我需要先试试。是的,因为您无法预测异步调用需要多长时间。如果调用需要超过200毫秒,代码将不会抛出/返回任何内容:-(你能给我演示一下吗?我不知道如何使用
promise
添加了一个例子。但是请去读一篇关于
Promises
的文章。我不会给你写软件;-)好的。我明白了。然后我应该删除所有用于获取返回值的超时值。
$timeout
非常糟糕?哦,不..所以我需要使用
promise
。我需要先尝试。是的,因为您无法预测异步调用需要多长时间。如果调用需要超过200毫秒,代码将不会抛出/返回任何内容:-(你能给我演示一下吗?我不知道如何使用
promise
添加了一个例子。但是请去读一篇关于
Promises
的文章。我不会给你写软件;-)好的。我明白了。然后我应该删除用于获取返回值的所有超时