Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不按顺序调用函数?_Javascript - Fatal编程技术网

Javascript 为什么不按顺序调用函数?

Javascript 为什么不按顺序调用函数?,javascript,Javascript,我正在尝试创建一个函数,可以从websql中的表中读取数据,但是当我运行代码时,在警报2处数组中只有数据 代码如下: function read(table, keys){ var data = []; var db = window.openDatabase("Database", "1.0", "PMM", 200000); db.transaction(function (tx) { tx.executeSql('SELECT * FROM ' + table,

我正在尝试创建一个函数,可以从websql中的表中读取数据,但是当我运行代码时,在警报2处数组中只有数据

代码如下:

function read(table, keys){
  var data = [];
  var db = window.openDatabase("Database", "1.0", "PMM", 200000);
  db.transaction(function (tx) { 
      tx.executeSql('SELECT * FROM ' + table, [], function (tx, results) { 
            var len = results.rows.length;
            for(var i = 0; i < len; i++){
                var row = [];
                for(key of keys){
                   row.push(results.rows.item(i)[key]);
                 }
                 data.push(row);
            }
            alert(data + " --2--");
      }); 
      alert(data + "--3--");
  });
  alert("--4--")
  return data;
}

var a = read("expenses", ['name', 'cost']);
alert(a + "--1--");
我希望警报消息按如下方式运行 -2-, -3-, -4-, -一,-

但它所做的是返回 -4-, -1-, -3-, -二,-


为什么?

我不知道您调用的函数是什么样的,但根据您的描述,我相信它们是异步的

根据它们的实现,您可能会使用.then或其他回调等待它们的执行

查看此项了解有关异步函数的更多信息: