首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此函数是否应在服务器上异步运行

问此函数是否应在服务器上异步运行
EN

Stack Overflow用户
提问于 2018-04-23 22:02:05
回答 1查看 38关注 0票数 0

我对node js不是很有经验,但我正在开发一些类似于uber如何在地图上实时显示他们的汽车的东西。

所以我有一个sql数据库,里面有一大堆汽车和它们的gps定位。客户端将它们的gps坐标和半径发送到以下函数。目前,一些代码是伪代码。

代码语言:javascript
复制
var mysql = require('mysql');
var express = require('express');

var connection = mysql.createConnection({
    host: "",
    port: ,
    user: "",
    password: "",
    database: ""
});

user.on('returnCars', function(gps, radius){    
     connection.query({
        sql: "SELECT * FROM cars WHERE radius = ?", 
            values: [username] },                   

                    function(error, results, fields) 
                    {           

                    if(results) 
                        {
                            user.emit('returnCars', results);
                        }
                    }
            });
     });
});

因此,当sql查询不是即时的时候,如果有1000人同时运行这个函数,它肯定会阻塞。我所有的研究都告诉我,这是正确的方法,所以唯一的选择是异步运行,对吧?

另外,是否只有returnCars函数才能异步运行?我不确定是不是因为连接/ sql详细信息变量不在函数或任何东西中,所以它会尝试一次读取它,所以也许它应该放在函数或其他东西中。

EN

回答 1

Stack Overflow用户

发布于 2018-04-23 22:07:19

代码太过零碎,不能真正帮助您,但总的来说

  • 如果您使用的是Node内置的HTTP服务或它的上层服务,则接收请求时的代码将异步运行,无需执行任何特殊操作即可实现。
  • 如果您使用任何主要的npm模块进行MySQL访问,则用于执行查询的函数将异步运行,无需特殊操作即可实现。

在您的伪代码示例中,您展示了sqlQuery函数替代函数的回调。这很可能是您选择使用的MySQL访问模块的使用方式,无论是通过这样的直接回调还是通过promises。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49983110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档