在 SQL 查询之外导出值(回调地狱)[重复]

Posted

技术标签:

【中文标题】在 SQL 查询之外导出值(回调地狱)[重复]【英文标题】:Export a value outside a SQL query (Callback Hell) [duplicate] 【发布时间】:2021-10-07 00:22:31 【问题描述】:

如果我的 SQL 查询找到结果,我的目标是设置 someVar 为 1。 问题是分配是本地的,当我尝试console.log(someVar) 时,结果是块内为 1,但块外为 0。有没有办法将值导出到外面?

let someVar = 0;
con.query(`SOME SQL QUERY`, (error, rows) => 
    if (error) throw error
    if (rows.length > 0) 
        someVar = 1;
        //console.log(someVar) -> The result is 1
    
);
con.end();
//console.log(someVar) -> The result is 0

if (someVar === 0) 
    // Some code

【问题讨论】:

是回调,不同步执行。 callbackhell.com 好的,我会看你的网站,谢谢你的帮助^^ 【参考方案1】:

感谢 fredrik 我修复了它。 我终于像这样使用了promise

let promiseQuery = await new Promise((resolve, reject) => 
    con.query(`SOME SQL QUERY`, (error, results, fields) => 
        if (error) reject(error);
        resolve(results || );
    )

)
const someVar = promiseQuery.length
if (someVart === 0) 
    // Some code
 else 
    // Some code

【讨论】:

以上是关于在 SQL 查询之外导出值(回调地狱)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

[JS]回调函数和回调地狱

JavaScript 使用Async 和 Promise 完美解决回调地狱

什么是地狱回调?解决回调地狱的两种方法

回调地狱以及用promise怎么解决回调地狱

解决回调地狱问题

promise解决回调地狱