gpt4 book ai didi

javascript - NodeJS 脚本在浏览器刷新两次后才响应

转载 作者:行者123 更新时间:2023-12-02 15:34:05 26 4
gpt4 key购买 nike

我有以下脚本,它将 URL 作为参数并从 MariaDB 检索数据并显示它。

var express = require('express');
var app = express();
var Client = require('mariasql');
var http = require("http");
var url = require("url");
var output;

var c = new Client({
host: '127.0.0.1',
user: 'root',
db: 'MyDB'
});

http.createServer(function(request, response)
{
var parsed = url.parse(request.url);
response.writeHead(200, {'Content-Type': 'text/plain'});
if(String(parsed.href) == "/")
{
c.query('SELECT * FROM table',
null,
//{ useArray: true },
function(err, rows)
{
if(err)
{
output = "Incorrect Argument";
}
else
{
output = rows;
}
}
);
c.end();
}
response.end(output);
}).listen(3000);

现在,当我运行脚本时,浏览器上显示的输出是正确的,但仅当我刷新浏览器两次时才会出现。我对 NodeJS 真的很陌生,我不知道问题是什么,也不知道我到底哪里出了问题。

最佳答案

在 Node/javascript 中,回调函数可能会在不同的时间调用。例如,在您的代码中,查询的回调在您结束响应后返回 - 您应该在回调 block 中结束响应,如下所示:

var express = require('express');
var app = express();
var Client = require('mariasql');
var http = require("http");
var url = require("url");
var output;

var c = new Client({
host: '127.0.0.1',
user: 'root',
db: 'MyDB'
});

http.createServer(function(request, response) {

var parsed = url.parse(request.url);
response.writeHead(200, {'Content-Type': 'text/plain'});
if(parsed.href == "/") {
c.query('SELECT * FROM table',
null,
//{ useArray: true },
function(err, rows)
{
if(err)
{
response.statusCode = 404;
response.end();
}
else
{
output = rows;
response.end(output);
}

});
}}).listen(3000);

关于javascript - NodeJS 脚本在浏览器刷新两次后才响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com