猿问

node如何做同步?

nodejs搭配mysql数据库,代码如下:
connection.query('select*fromreplyr,articleawherer.aid=a.aidandparentId=""',function(err,ress){
if(err)console.log(err);
else
{
varj=0;
for(vari=0;iconnection.query('select*fromreplywhereparentId="'+ress[i].rid+'"',function(err,ress2){
if(err)console.log('查询失败');
else{
console.log(j);
ress[j++].reply=ress2;
}
})
}
console.log(ress);
connection.end();
}
但是打印出来的结果reply属性为空,检测到位异步请求造成的,请问如果做同步?
眼眸繁星
浏览 363回答 2
2回答

皈依舞

用asyncasync=require('async');async.map(ress,function(item,callback){connection.query('select*fromreplywhereparentId="'+item.rid+'"',function(err,reply){if(err){returncallback(err);}item.reply=reply;returncallback(null,item);});},function(err,ress){returnconsole.log(ress);});

守着星空守着你

使用异步流程控制库就可以了楼上推荐的是async还有promise规范的Q,bluebire还有国人写的thenjs都可以解决你的问题
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答