【发布时间】:2015-06-03 17:52:56
【问题描述】:
我在 koa.js 中有以下代码
var koa = require('koa');
var app = koa();
var mysql = require('mysql');
app.use(function *(next) {
console.log('A');
yield next;
console.log('E');
});
app.use(function *(next) {
console.log('B');
yield next;
console.log('D');
});
app.use(function *(next) {
var rowCount;
console.log('C');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'pass',
database : 'db1'
});
connection.connect();
connection.query('SELECT * from itemcategory', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows);
rowCount = rows;
console.log('The rowCount is: ', rowCount);
});
this.body = "we are good!.." + rowCount ;
connection.end();
});
app.listen(3000);
rowCount 变量在浏览器中打印 undefined。但在 connection.query 内部,它会打印所有行。 控制台中的输出也是
PS J:\proj\pg> node --harmony .\app.js
A
B
C
D
E
The solution is: [ { categoryno: 0, categoryname: 'PESTICIDES', categorystatus: 0 },
{ categoryno: 1, categoryname: 'SEEDS ', categorystatus: 0 },
{ categoryno: 2, categoryname: 'FERTILIZERS', categorystatus: 0 },
{ categoryno: 3, categoryname: 'OTHERS', categorystatus: 0 } ]
The rowCount is: [ { categoryno: 0, categoryname: 'PESTICIDES', categorystatus: 0 },
{ categoryno: 1, categoryname: 'SEEDS ', categorystatus: 0 },
{ categoryno: 2, categoryname: 'FERTILIZERS', categorystatus: 0 },
{ categoryno: 3, categoryname: 'OTHERS', categorystatus: 0 } ]
根据 Koa 中的示例,它应该打印行,然后只打印 D 和 E,但 db 行在 D 和 E 之后打印。
如果删除 db 代码,则它会以正确的顺序打印。我带着和谐旗奔跑。
请告诉我是什么问题?
【问题讨论】:
标签: javascript koa