【发布时间】:2012-08-07 01:59:56
【问题描述】:
通常,我们执行 SQL 查询并在回调中获取结果。像这样:
sqlExec('SELECT COL FROM TBL;', function (err, results, fields) {
doSomething(results);
});
但是如果我们需要对 SQL 结果做更复杂的工作,代码会更难看,像这样:
var tmp = '';
sqlExec('SELECT COL1 FROM TBL1;', function (err, results, fields) {
tmp = doSomething(results);
sqlExec('SELECT COL2 FROM TBL2 WHERE CONDITION2 = ' + tmp + ';', function (err, results, fields) {
tmp = doSomething2(results);
sqlExec('SELECT COL3 FROM TBL3 WHERE CONDITION3 = ' + tmp + ';', function (err, results, fields) {
....
});
});
});
我们有让它同步的想法吗?像这样:
var tmp = '', result = '';
result = sqlExec('SELECT COL1 FROM TBL1;');
tmp = doSomething(result);
sqlExec('SELECT COL2 FROM TBL2 WHERE CONDITION2 = ' + tmp + ';');
tmp = doSomething(result);
sqlExec('SELECT COL3 FROM TBL3 WHERE CONDITION3 = ' + tmp + ';');
...
谢谢, 高考
【问题讨论】:
-
也许你应该看看 Async.js github.com/caolan/async
-
看起来您正在努力解决的主要问题是将异步请求链接起来,以便在没有所有嵌套的情况下更易于管理,对吧?
-
是的,如果我们可以在没有嵌套的情况下完成这些请求,那应该会更好。
标签: javascript mysql node.js