Пожалуйста, найдите код, приведенный ниже,Неоднозначность поток выполнения программы node.js
Что я до сих пор не в состоянии понять, в коде, является то, что, почему браузер продолжает ждать 10 секунд перед выполнением следующего запроса. Разве это не просто передать запрос сна в базу данных, а затем перейти к следующей следующей операции?
var http = require('http');
var mysql = require('mysql');
http.createServer(function (request, response) {
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'pops',
dateStrings: 'true',
multipleStatements: 'true'
});
// Connect to MySQL (if there is an error, report it and terminate the request)
connection.connect (function (err) {
// connected! (unless `err` is set)
if (err !== null)
{
console.log('Error '+err.code);
}
else
{
console.log('Connection to database successful!');
}
});
connection.query("SELECT sleep(10);", function(err, rows) {
// There was a error or not?
if (err !== null)
{
console.log("Query Rrror:" + err);
}
else
{
// Shows the result on console window
console.log("called after 10 seconds");
}
});
connection.query("SELECT * FROM team", function(error, result) {
// There was a error or not?
if (error !== null)
{
console.log("Query Rrror:" + error);
}
else
{
// Shows the result on console window
response.writeHead(200, {"Content-Type": "text/html"});
length = result.length - 1;
for(var i = 0; i <= length; i++)
{
row_obj = result[i];
team_id = row_obj.id;
team_name = row_obj.team_name;
team_color = row_obj.color;
created_at = row_obj.created_at;
response.write('Team ID: ' + team_id + '<br />');
response.write('Team Name: ' + team_name + '<br />');
response.write('Team Color: ' + team_color + '<br />');
response.write('Creation Date: ' + created_at + '<br />');
response.write('<br /><br />');
}
response.end("OK");
}
});
// Close connection
connection.end();
}).listen(8080, "127.0.0.1");
Да, я не пробовал mysql npm, но не '.connect' и' .query' работает асинхронно? – Passerby
Я думаю, что правильно ответил Педро. Не могли бы вы добавить вывод, который вы видите в консоли? Это покажет, какие шаги выполняются/заканчиваются и в каком порядке. –