在我的nodejs程序中,while循环具有可由其内部的异步函数修改的条件。但是,由于该函数是异步的,因此程序将陷入无限循环。如何解决这个问题?
let unique = true
while(unique)
{
console.log("Inside Loop")
let id = random.generate(5)
let u_query = "Insert into table_db (id, name) values ("+db.escape(id)+", "+db.escape(name)+")";
db.query(u_query, (error, results, fields) => {
console.log("Inside Query")
if(error)
{
if(error.code !== 'ER_DUP_ENTRY')
throw error
}
else
{
unique = false // to stop execution
res.send("Shorted URL : "+newURL)
// break is giving error
//SyntaxError: Illegal break statement
}
})
// To check if loop is stopping and asynch function is causing infinite loop
// I used unique = false here
}
谢谢!
使用递归来确保所有数据库查询都同步运行,这是一个示例:
function nextQuery() {
let id = random.generate(5)
let u_query = "Insert into table_db (id, name) values ("+db.escape(id)+", "+db.escape(name)+")";
db.query(u_query, (error, results, fields) => {
if (error) {
if (error.code !== 'ER_DUP_ENTRY')
throw error
// call nextQuery()
return nextQuery();
}
else {
return res.send("Shorted URL : "+newURL) // to stop execution
}
})
}
nextQuery();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句