Node.js 回调函数来解决SQL语句与返回值的异步问题
来源:互联网 发布:mysql,书 编辑:程序博客网 时间:2024/05/18 01:38
作为一个刚刚接触Node的菜鸟,面对Node的异步问题着实是头大。最近做一个前端的分页问题,原代码是顺序执行两条sql语句然后返回:
client.query( //第一个sql 'SELECT * FROM products' , function selectCb(err, results, fields) { if (err) { throw err; } if(results) { len=0; for(var i = 0; i < results.length; i++) { len = len+1; } } } ); client.query( //第二个sql 'SELECT * FROM products where id>'+(page-1)*size+' and id<='+page*size, function selectCb(err, results, fields) { if (err) { throw err; } if(results) { data = []; for(var i = 0; i < results.length; i++) { data[i] = {id:results[i].id, image:results[i].image}; console.log("%d\t%s", results[i].id, results[i].image); } } } ); response.writeHead(200, {'Content-Type': 'text/plain','Access-Control-Allow-Origin':'*'});str = " {\"records\": ";str += JSON.stringify(data); //此处为一个[]数组str += ",\"len\": ";str += len;str += ",\"status\": ";str += 1;str += "}";response.end(str);
但实际上,结果是Node先返回了response,然后执行的sql语句。
后来通过查阅,初步了解了通过回调函数来实现同步,修改程序如下:
client.query( //第一个sql 'SELECT * FROM products' , function selectCb(err, results, fields) { if (err) { throw err; } if(results){ len=0; console.log("client.query1"); for(var i = 0; i < results.length; i++) { len = len+1; }}client.query( //第二个sql'SELECT * FROM products where id>'+(page-1)*size+' and id<='+page*size, function selectCb(err, results, fields) { if (err) { throw err; } if(results){ data = []; for(var i = 0; i < results.length; i++) { data[i] = {id:results[i].id, image:results[i].image}; console.log("%d\t%s", results[i].id, results[i].image); }} response.writeHead(200, {'Content-Type': 'text/plain','Access-Control-Allow-Origin':'*'});str = " {\"records\": ";str += JSON.stringify(data); //此处为一个[]数组str += ",\"len\": ";str += len;str += ",\"status\": ";str += 1;str += "}";response.end(str);});});程序可以按照原次序执行了。
0 0
- Node.js 回调函数来解决SQL语句与返回值的异步问题
- Node.js express 之mongoose 从异步回调函数返回值,类似于同步
- node.js异步式回调函数
- Node.js 异步非阻塞的回调函数
- node.js回调函数与事件
- Node.js 回调函数
- Node.js 回调函数
- Node.js回调函数
- Node.js 回调函数
- node.js 回调函数
- Node.js 回调函数
- Node.js 回调函数
- Node.js 回调函数
- node.js回调函数
- node.js:回调函数
- Node.js 回调函数
- node.js第四课(回调函数与事件)
- 浅谈node.js 回调函数与事件机制
- tomcat6 数据源配置
- Centos7下Mysql 安装及简单配置
- 你是去上大学,别让大学上了你
- 利用HTML和CSS实现常见的布局
- PHP面向对象_内置标准类,普通数据类型转为对象类型
- Node.js 回调函数来解决SQL语句与返回值的异步问题
- [LeetCode]--412. Fizz Buzz
- THU-OJ-"PA1-2"-"Zuma Issue"
- JS时钟
- 多线程继承Thread类
- info-detail-476094.html
- Python中元类的执行优先次序
- codeforces-731E-dp
- 多线程实现Runnable接口