当前位置: 首页 > 面试题库 >

JavaScript同步编程和异步编程之间有什么区别(在node.js中)

楚方伟
2023-03-14
问题内容

我一直在阅读nodebeginner,并且遇到了以下两段代码。

第一个:

    var result = database.query("SELECT * FROM hugetable");
    console.log("Hello World");

第二个:

    database.query("SELECT * FROM hugetable", function(rows) {
       var result = rows;
    });
    console.log("Hello World");

我得到了他们应该做的事情,他们查询数据库以检索查询的答案。然后console.log('Hello world')

第一个应该是同步代码。第二个是异步代码。

这两件作品之间的区别对我来说很模糊。输出是什么?

搜寻异步编程也没有帮助我。


问题答案:

区别在于,在第 一个示例中 ,程序将在第一行中阻塞。下一行(console.log)必须等待。

第二个示例
console.log将在处理查询时执行。也就是说,查询将在后台处理,而您的程序正在执行其他操作,并且一旦查询数据准备就绪,您就可以使用它进行任何操作。

简而言之:第一个示例将阻止,而第二个示例则不会。

以下两个示例的输出:

// Example 1 - Synchronous (blocks)
var result = database.query("SELECT * FROM hugetable");
console.log("Query finished");
console.log("Next line");


// Example 2 - Asynchronous (doesn't block) 
database.query("SELECT * FROM hugetable", function(result) {
    console.log("Query finished");
});
console.log("Next line");

将会:

  1. Query finished
    Next line

  2. Next line
    Query finished

注意
虽然Node本身是 单线程的 ,但有些任务可以并行运行。例如,文件系统操作在不同的过程中发生。

这就是为什么Node可以执行异步操作的原因:一个线程在执行文件系统操作,而Node的主线程一直在执行您的JavaScript代码。在节点等事件驱动的服务器中,文件系统线程将某些事件(例如完成,失败或进度)以及与该事件相关联的任何数据(例如数据库查询或错误的结果)通知主节点线程。消息),然后由主节点线程决定如何处理该数据。



 类似资料:
  • 问题内容: 我一直在阅读nodebeginner, 并且遇到了以下两段代码。 第一个: 第二个: 我得到了他们应该做的事情,他们查询数据库以检索查询的答案。然后。 第一个应该是同步代码。第二个是异步代码。 这两部分之间的区别对我来说很模糊。输出是什么? 搜寻异步编程也无济于事。 问题答案: 区别在于,在第 一个示例中 ,程序将在第一行中阻塞。下一行()必须等待。 在 第二个示例中 ,将在处理查询时

  • 本文向大家介绍同步和异步传输之间的区别,包括了同步和异步传输之间的区别的使用技巧和注意事项,需要的朋友参考一下 在数字电子设备中,同步传输和异步传输都是串行数据传输的一种类型,其中,基于用于同步的时钟脉冲,数据在发送方和接收方之间进行传输。 以下是同步传输和异步传输之间的重要区别- 序号 键 同步传输 异步传输 1 定义 同步传输是一种传输类型,其中在发送器和接收器之间共享一个公共时钟脉冲以允许同

  • 问题内容: 对于旅行预订Web应用程序,如果有100个并发用户登录,是否应该通过“同步”或“静态同步”方法来实现机票预订并生成“电子机票编号”? 问题答案: 好了,您是否知道静态方法和实例方法之间的一般区别? 唯一的区别是,在VM开始运行该方法之前,它必须获取监视器。对于实例方法,获得的锁是与您要在其上调用该方法的对象相关联的锁。对于静态方法,获取的锁与类型本身关联- 因此,其他线程将无法同时调用

  • 本文向大家介绍同步和异步计数器之间的区别,包括了同步和异步计数器之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,在数字电子学中,计数器是由一系列触发器组成的顺序逻辑电路,用于按负或正边沿跳变来计数输入出现的次数。现在,基于触发器的触发方式,我们可以区分同步计数器和异步计数器。 以下是同步计数器和异步计数器之间的重要区别。 序号 键 同步计数器 异步计数器 1 触发 顾名思义,在使用同

  • 问题内容: 当我使用of方法时,和之间有什么区别? 问题答案: Mozilla开发人员:同步和异步请求 支持同步和异步通信。但是,一般而言,出于性能方面的考虑,异步请求应比同步请求优先。 简而言之,同步请求会阻止代码执行,并可能泄漏内存和事件。这可能会导致严重的问题。使用同步请求的唯一可行理由是更轻松地促进其中的下载。

  • 介绍 Javascript 是一个单线程的编程语言,单线程的特点就是一次只能处理一件事情,当前代码任务耗时执行会阻塞后续代码的执行。异步编程则是一种事件驱动编程,请求调用函数或方法后,无需立即等待响应,可以继续执行其他任务,而之前任务响应返回后可以通过状态、通知和回调来通知调用者。 异步编程方法 js 中的异步编程方法有回调函数、事件处理函数、观察者、Promise、Generator、async