亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

nodejs怎么同步從一個數據庫查詢函數中返回一個值?

nodejs怎么同步從一個數據庫查詢函數中返回一個值?

慕尼黑8549860 2019-04-16 16:58:09
我想把從數據庫中查詢得到的值儲存到一個變量中然后打印出來,但數據庫查詢是異步的,打印函數總是先一步調用,查詢函數后一步調用,打印出來的值是空的。下面是代碼。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貢獻1810條經驗 獲得超4個贊

恭喜進入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-16
  • 2 回答
  • 0 關注
  • 275 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號