为什么不按顺序调用这些功能?

时间:2019-08-30 15:31:46

标签: 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, [], 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-- --1-

但是它做的就是返回 --4-- --1-- --3-- --2-

为什么?

1 个答案:

答案 0 :(得分:-1)

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

取决于它们的实现,您可能可以使用.then()或另一个回调来等待它们的执行。

查看此内容以了解有关异步功能的更多信息:https://javascript.info/callbacks