这是我在这里的第一篇文章,我希望我做得对。我正在为我想做的项目学习 nodejs,并且我正在使用 node 来编写 Web 服务。我遵循了一个教程并获得了一个有效的网络服务,但我必须自己编写连接到数据库的部分。问题是,它会返回数据,但也会阻塞其他所有内容。如果查询 1 需要 20 秒,查询 2 只需要 3 秒,我调用查询 1 再调用查询 2,查询 2 只会在查询 1 完成后显示,从而阻止所有潜在用户!这是我的代码的一部分,如果您需要更多,请询问
这是请求处理程序之一,最后 2 个参数用于测试。
function start(response){
console.log("Request handler 'insertHood' was called.");
response.writeHead(200, {"Content-Type": "text/html"});
var result = db.execute('select x(country_location), y(country_location), country_name, zoom_level from country', response, "Query 1 ", 10);
}
这是 database.js 文件中的函数
function execute(query, response, msg, sleepz) {
var result = sequelize.query(query)
.success(function(rows)
{
sleep(sleepz);
response.write(msg + JSON.stringify(rows));
console.log(msg + (new Date()));
response.end();
}
).error(function(e) {
console.log("An error occured", e);
response.write("there was an error man, yo yoy oy");
response.end();
}
);
}
我知道 .success 和 .error 是回调函数,但我似乎无法找到使它们异步的方法,我读到了一个异步库,但我认为它不能满足我的需要,我确定我做错了什么,什么是吗?