javascript - 该函数是否应该在服务器上异步运行

标签 javascript mysql node.js logic

我对 Node js 没有那么丰富的经验,但我正在开发类似于 uber 如何在 map 上实时显示他们的汽车的东西。

所以我有一个包含大量汽车及其 GPS 位置的 SQL 数据库。客户端将其 GPS 坐标和半径发送到以下函数。有些现在是伪代码。

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 详细信息变量不在函数或任何内容中,所以它会尝试立即读取它,所以也许它应该进入函数或其他内容。

最佳答案

代码太零散,无法真正帮助您,但总的来说:

  • 如果您使用 Node 的内置 HTTP 服务或在其之上分层的服务(例如 Express),则接收请求时的代码预计会异步运行,并且您无需执行任何特殊操作即可发生这种情况。

  • 如果您使用任何主要 npm 模块进行 MySQL 访问,则用于进行查询的函数将异步运行,并且无需执行任何特殊操作即可实现此目的.

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

关于javascript - 该函数是否应该在服务器上异步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49983110/

相关文章:

javascript - 将 VisuAlgo 冒泡排序代码翻译成 Javascript

javascript - 为什么不在 2017 年将 Array.prototype 方法添加到 NodeList.prototype 中?

php - 过滤存储在 Couchbase 中的数据

SELECT 中忽略的 MySQL DISTINCT 显示重复

javascript - 如何在 Node.js 上使用 twitter api 时实现回调函数

jquery - 将库与 LimeJS HTML5 结合使用

javascript - 添加前清除 div

javascript - 为什么 Reflux 中的同步操作不能也用作 Promise?

php - Symfony - 从其他实体传递数据

node.js - 我是编程新手,我正在学习 node.js,但是在执行 parsedUrl 时,我得到了 [object :null] with the output, 如何修复它