gpt4 book ai didi

javascript - 如何在具有异步查询功能且仅在回调函数中修改循环条件的Node JS中的while循环中使用条件?

转载 作者:行者123 更新时间:2023-11-30 14:50:47 29 4
gpt4 key购买 nike

在我的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
}

谢谢!

最佳答案

使用recursion为了确保所有数据库查询同步运行,这里有一个例子:

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();

关于javascript - 如何在具有异步查询功能且仅在回调函数中修改循环条件的Node JS中的while循环中使用条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48133132/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com