nodejs 数据库查询异步处理

       古人云:代码有问题,怎么办??找我啊,。。嘿嘿嘿

最近写代码遇到了这么一个问题在用nodejs连接数据库时出现了一个特别蛋疼的问题,我们先来看事例代码,我简化了

 

 1 app.get('/select_kyjj',function(req,res){
 2 3 4     client.query(str,function(err,data){
 5        console.log(“这是查询里面“) 6     });
7 console.log (”这是查询外面”)
8 9 });

我们这个是nodejs 后台的代码,每次的打印出来的当然是

------这是查询外面

------这是查询里面

那为什么不是先查询查询里面再查询里面的嘛?当时我也入坑了,原因就是query在查询的时候他是异步的

 1 client.query(str,function(err,data){
 2         length = data.length;
 3         for(var i in data){
 4             num = i;
 5             var flag = isGroup(data[i].name,ls_arr);//true
 6             if(!flag){//没有分组
 7                 ls_arr.push(data[i].name);
 8                 client.query('select * from groud_qd where name ="'+data[i].name+'"',function(err,data1){
 9                     datajson.push(data1);
10                 })
11             }
12         }
13     });
14 
15     var timer = setInterval(function(){
16         if(num == length - 1){
17             res.jsonp(datajson);
18             clearInterval(timer);
19         }
20     },500);

这里我就直接的插入代码,上面的我们需要遍历这个整个的数组,并且我们需要提取数据进行整合,最后将数据传出去;

这里我用的是事件监听,用setInterval监听我们的数据是否的整合完整,完整之后就将数据输出。

这里相当于我在这个后面不断的等待,循环达到我所需要的目的,最后解决这个异步的问题。

当然,方法有很多,希望大家能跟我分享分享,共同进步

转载于:https://www.cnblogs.com/Pongtao/p/7016871.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值