javascript - Javascript 是否按顺序运行代码行?并完成处理然后继续?

标签 javascript alasql

我是第一次尝试用 Javascript 编写一些代码,但我猜我没有从概念上理解一些东西!

以下代码对我来说工作正常:

var db = new alasql.Database("db");
db.exec('CREATE TABLE IF NOT EXISTS Myonetwo;');

var aaa = db.exec('select * into Myonetwo from json("http://localhost:8080/app1")',[],function(res){
    db.exec('select * from Myonetwo;',[],function(bbb){

            console.log(bbb.length);    
        });
});

但是这个是一样的但是没有内嵌函数的函数,是不行的。

var db = new alasql.Database("db");
db.exec('CREATE TABLE IF NOT EXISTS Myonetwo;');

var aaa = db.exec('select * into Myonetwo from json("http://localhost:8080/app1")');
var bbb = db.exec('select * from Myonetwo;');
console.log(bbb.length);

此外,是否将结果作为函数定义为所有 Javascript 的参数之一?

最佳答案

这是因为 exec 函数是异步,所以在您的第二个示例中,bbb 赋值行将发生在 之前aaa 赋值行整理。

这就是为什么 exec 有一个回调函数作为它的最后一个参数。

在您的第一个代码片段中,事件的时间轴将类似于:

  • 第一次执行调用
  • 一段时间过去了...
  • 第一次执行回调发生
  • 第二个 exec 调用执行
  • 第二次执行回调发生

在这种情况下,您知道第二次 exec 调用将在第一次 exec 调用之后发生。

您的第二个代码片段的时间轴将是:

  • 第一次执行调用
  • 第二次执行调用
  • 第一个或第二个 exec 调用完成(不确定)
  • 第一个或第二个 exec 调用完成(不确定)

您可以看到这将对您的逻辑产生影响。

这是一篇很好的文章,可以了解更多关于异步编程的信息:https://blog.risingstack.com/asynchronous-javascript/

关于javascript - Javascript 是否按顺序运行代码行?并完成处理然后继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898975/

相关文章:

javascript - 在angular js应用程序中使用alasql将数据导出到excel时如何添加标题行和单元格格式?

javascript - 复杂对象数据结构转xlsx

javascript - Alasql 结果将在程序的其他部分使用

javascript - 检查服务器状态时出现延迟。用jquery

javascript - 选中复选框时调用 Ajax 或提交按钮

javascript - noUiSlider -> 使用值作为表单输入

javascript - 确定 GIF 动画状态?

javascript - 通过保留数据类型将数据从 JSON 导出到 excel

javascript - 重用 alasql 中的变量

javascript - jQuery 匿名函数 - 嵌套函数