Javascript node.js中循环内的同步
我正在使用express框架在node.js web应用程序中工作,我需要从mysql数据库中获取结果。我想得到同步的结果。这是可能的。请建议。例如:Javascript node.js中循环内的同步,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我正在使用express框架在node.js web应用程序中工作,我需要从mysql数据库中获取结果。我想得到同步的结果。这是可能的。请建议。例如: result = [{id:4,is_parallel:'No',name:'Pankaj'},{id:5,is_parallel:'Yes',name:'uu'},{id:6,is_parallel:'No',name:'kk'}] for(val in result){ if(result[val
result = [{id:4,is_parallel:'No',name:'Pankaj'},{id:5,is_parallel:'Yes',name:'uu'},{id:6,is_parallel:'No',name:'kk'}]
for(val in result){
if(result[val].is_parallel=='No'){
var parallelArray = {};
parallelArray.id = result[val].id;
parallelArray.name = result[val].name;
newArray.push(parallelArray);
console.log(newArray);
}else{
$sql ='select id,process_wf_id from process_workflow_parallel_branch where process_wf_id='+result[val].id+'';
connection.query($sql,
function(err, results) {
if(err){
callback(err,null);
}else{
if(results.length>0){
for(val in results){
//
}
}
}
});
}
}
就您使用的
connection.query
而言,不可能同步接收结果,因为该函数是异步的,您无法避免强制它同步。此外,在可能的情况下,依赖异步是一条可行的道路,因为否则会导致阻塞操作(例如,writeFileSync
),这与node.js的用途完全相反 thx对于您的建议,您的意思是我们无法同步获取数据?是和否。有时,库提供同步和异步方法来执行某些操作(如上所述,node.js本身的fs
模块就是一个例子),但通常不鼓励这样做,除非在极少数情况下,因为node.js背后的想法恰恰相反。从你发布的代码来看,我不能说。无论如何,使用express,在涉及异步函数的情况下,通常需要调用下一个函数。