为了账号安全,请及时绑定邮箱和手机立即绑定

nodejs怎么同步从一个数据库查询函数中返回一个值?

nodejs怎么同步从一个数据库查询函数中返回一个值?

qq_遁去的一_1 2019-04-07 11:18:22
我想把从数据库中查询得到的值储存到一个变量中然后打印出来,但数据库查询是异步的,打印函数总是先一步调用,查询函数后一步调用,打印出来的值是空的。下面是代码。varsqlite3=require('sqlite3').verbose();varasync=require('async');varstr="";vardb=newsqlite3.Database('score.db',function(){db.all("select*fromscore",function(err,res){if(!err){//console.log(JSON.stringify(res));str=JSON.stringify(res);console.log(str);//@1这里输出的是有值的str}else{console.log(err);}});});console.log(str+"jjjj");//@2这里输出的Str,是没有值的空的下面是输出结果:jjjj这是@2console打印的,Str是空的[{"id":1,"name":"jim","score":"100"},{"id":2,"name":"tom","score":"200"}]这是@1console打印的,str是有值的。请问怎样让查询回调先执行,让str获得值,传递出来,然后再执行最后一句@2的打印语句。javascript的异步回调真令人头痛啊,一直不知道怎么解决。
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

恭喜进入callback大坑
varsqlite3=require('sqlite3').verbose();
varasync=require('async');
varstr="";
varget_result=function(callback){
vardb=newsqlite3.Database('score.db',function(){
db.all("select*fromscore",function(err,res){
if(!err){
callback(JSON.stringify(res));
console.log(str);//@1这里输出的是有值的str
}else{
console.log(err);
}
});
});
}
get_result(function(data){
console.log(data)
})
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 309 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信