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

卡蒂克

在我的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章