单独一个线程上的javascript回调函数

前端之家收集整理的这篇文章主要介绍了单独一个线程上的javascript回调函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Javascript是单线程的.那么回调函数和它包含的函数是否在与主循环/事件循环相同的线程上执行?
database.query("SELECT * FROM hugetable",function(rows) {  // anonymous callback function
   var result = rows;
   console.log(result.length);
});
console.log("I am going without waiting...");

如果query()方法及其回调函数在与事件循环相同的线程上执行,则会发生阻塞.如果不是为什么Javascript被称为单线程?

任何人都可以帮助验证javascript(browser / node.js)是否在场景后面使用多个线程以实现非阻塞?

谢谢,

朋友们,
我看到了你的意见和答案.对不起,我对javascript很新.我很困惑,单线程asyn调用不会阻塞.如果有100个用户从hugeTable请求数据,这可能每个并发一分钟,并且事件循环将这些任务分配到一个队列并依次执行它们,query()方法执行如何阻止事件循环,因为它们全部打开一个单一的线程?

布拉德回答了这一部分

解决方法

Node.js本机库(不是JavaScript部分)一直使用单独的线程,但是代码的所有数据都会被移植回单个JavaScript执行线程.

由于您没有指定您正在使用的DB库,因此无法告诉您后台中的其他线程是否正在处理此查询.但是,这并不像你想的那么重要.

假设您要创建一个用于处理数据库连接的线程.您触发查询,该线程负责将查询提供给数据库服务器.那又怎样?在有数据回来之前,该线程无所事事.你已经有效地浪费了资源来保持一个线程并没有做很多事情. Node.js不能以这种方式工作.您有一个用于执行JavaScript的线程.

如果您要发送或接收数据(这主要是您的数据库连接器要执行的操作),那么这将自动后台线程池中处理.您使用的任何数据库连接器都可以使用本机扩展,可以使用线程执行任何操作.

请在此处查看我的帖子以获得更完整的解释:https://stackoverflow.com/a/19324665/362536

原文链接:https://www.f2er.com/js/156711.html

猜你在找的JavaScript相关文章