我尝试使用node.js创建一个新程序,该程序读取SQLite DB并创建XML文档。我创建了一些子方法,当我尝试使用回调方法返回DB结果时,它没有传递任何东西。
读取和创建xml部分的方法:
function dbpic(id,callback){
dd = db1.all("SELECT * FROM pictures left join item_pics on item_pics.picid=pictures.picid where item_pics.itemid = "+id+"", function(err1,rows1){
var ee = '';
rows1.forEach(function(row1) {
ee += '<picture>';
ee+='<picturename>'+row1.pic+'</picturename>';
ee+='<link>'+row1.url+'</link>';
ee += '</picture>';
});
console.log(ee);
callback( ee);
});
}
使用以下方法调用此方法:
dbpic(row.iid,function(df){
ss += df;
});
将显示变量ss
,但它不会从回调方法中获得任何内容。数据库包含相关数据并返回正确的结果结果。我使用console.log
检查了它们。
当我使用控制台记录df
时,它会正确显示结果。但ss
未存储df
个数据。
答案 0 :(得分:0)
根据您的意见,您在理解异步概念时遇到了一些麻烦。这就是代码中发生的事情。
// STEP 1
ss = "initalvalue";
dbpic(row.iid,function(df){
// STEP 3, 4, 5, 6 ...
ss += df;
});
// STEP 2
ss += "ending";
您需要等到最后一次回调被调用,直到您显示结果。