nodejs阻止进一步的mysql查询

时间:2015-12-10 16:18:02

标签: mysql node.js blocking synchronous

我有一个MySQL查询返回~11,000个结果,然后需要对每个结果运行进一步的查询。在代码运行时,它不允许其他用户登录网站。

我所看到的潜在问题是使用回调函数或foreach循环,但这并没有帮助。

代码如下所示:

query(sql, params, function(err, result) {
   result.foreach(
       query(generate_sql(result), params, function(err, result) {
               //do stuff
       });
   )
});

2 个答案:

答案 0 :(得分:0)

我建议您使用Promises

然后你的代码会是这样的:

var Promise = require('bluebird');

_query = Promise.promisify(query);

_query(sql, params)
    .map(function(singleRow) {
        // you get here every single row of your query
    })
    .then(function() {
        // you are finished
    });

答案 1 :(得分:0)

你的问题是有很多疑问。 11,001查询是一个非常大的数字,我不认为MySQL可以并行处理该数量的查询。 另一种方法是使用子查询来处理您的问题。