您好,欢迎来到锐游网。
搜索
您的当前位置:首页Node.js的函数返回值

Node.js的函数返回值

来源:锐游网
Node.js的函数返回值

先看⼀段代码:

function select(sqlscript){ var result = \"\";

sql.connect(config, function(err) { var request = new sql.Request();

request.query(sqlscript, function(err, recordset) { result = recordset;

console.log(\"AAA:\"+result); });

request.on('recordset', function(columns) { // Emitted once for each recordset in a query });

request.on('row', function(row) {

// Emitted for each row in a recordset });

request.on('error', function(err) { // May be emitted multiple times });

request.on('done', function(returnValue) { // Always emitted as the last one }); });

console.log(\"BBB:\"+result); return result;}

运⾏后可以看到, console.log(\"AAA:\"+result); 这⼀句还是有值的,但是这⼀句console.log(\"BBB:\"+result); 却是:BBB:undifined 。这是为什么呢? 原来,

⼀般按回调函数的逻辑,是先执⾏第⼀个console.log, 再执⾏第⼆个console.log, 但是中间⼀个回调函数, ⽐如 IO 操作其实还没执⾏ 所

以console.log执⾏的时候, 回调函数还没执⾏, 所以就没有返回值 等到数据库返回数据之后, return 的内容也就没有被捕获了,这就是异步特性带来的流程控制⿇烦。 所以,

⽤ Node 只能把后续的步骤写在回调函数⾥被继续调⽤和执⾏了 可以⽤ promise、 generator 之类⽅式弄更习惯的写法, 那就赶紧学习promise、generator的使⽤吧。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ryyc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务