node js callback 的一些问题
发布于 10 年前 作者 leesin11 4692 次浏览 最后一次编辑是 8 年前 来自 问答

小弟最近在练习node js 但总是遇到一个问题不知道该怎么解决 是关于callback的问题 举个例子来说 mysql 模塊中對mysql下query

var rs; connection.query(‘SELECT 1 + 1 AS solution’, function(err, rows, fields) { if (err) throw err; rs = rows; console.log('The solution is: ', rows[0].solution); });

根据官方文件 返回的结果 会传给rows 但我在外面宣告一个变数去里面把rows传给他 但之后console看却是undefine 不确定是不是callback函数的范围问题

如果我想要对结果作处理一定要在callback里面做吗? 得到的结果可以传出来吗?这个地方我一直有问题观念不是很懂 所以来这边请教一下各位

6 回复

@leesin11 这就是nodejs的异步编程特性。听我的,做一个小的测验。

connection.query(‘SELECT 1 + 1 AS solution’, function() { console.log(‘我在回调里’); }); console.log(‘我在回调外,回调什么的最讨厌了,我等不及了,我要滚蛋了’);

untitled1.png 你执行这个脚本,看到结果你就明白了。

请叫我雷锋

所以应该是外面的控制台先执行了之后里面的给值才执行 所以其实我的变数最后是我想要的结果 那要如何让他执行完再继续执行呢?  有爬了一些文旦还是有点不清楚  感谢

把你对rs的处理放到callback里面,而不是callback外面。

rows 应该放在cb里面吧,我之前和你遇到的问题一样,后来放到了cb里就完美解决了。

connection.query('SELECT 1 + 1 AS solution’, function(err, rows, fields) { if (err) throw err; xcall(rows) }); function xcall(rows){ console.log(rows); } //用CB的正确姿势

回到顶部