0
我使用node-mysql
与池连接来处理数据库的东西。一切都很好,但连接的方式被释放。看来connection.release()
需要在任何时候打电话事件将要结束。这非常不方便,也使我的代码更加丑陋。太多connection.release
db.getConnection(function(error,conn){
if(error){
conn.release();
throw error;
}
conn.query(query1,value1,function(err,result){
if(err){
conn.release();
throw err;
}
if(!value1){
return conn.release();
}
// do something here
if(!value2){
return conn.release();
}
// do something here
...
...
...
if(!valueN){
return conn.release();
}
// do something here
conn.release();
});
conn.query(query2,value2,function(err,result){
if(err){
conn.release();
throw err;
}
if(!value1){
return conn.release();
}
// do something here
if(!value2){
return conn.release();
}
// do something here
...
...
...
if(!valueN){
return conn.release();
}
// do something here
conn.release();
});
...
...
...
conn.query(queryN,valueN,function(err,result){
if(err){
conn.release();
throw err;
}
if(!value1){
return conn.release();
}
// do something here
if(!value2){
return conn.release();
}
// do something here
...
...
...
if(!valueN){
return conn.release();
}
// do something here
conn.release();
});
});
我觉得这个问题是如此真实。我怎样才能避免它?
这将需要重构你的代码。重构您的代码,以尽量减少每个函数的返回次数。这也会减少你的conn.release()调用。 – Guanxi 2014-08-27 17:24:05
如果我的每个“if(!value)”语句都是异步函数,会发生什么情况。每个回调都包含一个'error'参数。如何实施重构? – user3925697 2014-08-27 17:47:02