Heim  >  Fragen und Antworten  >  Hauptteil

Lösen Sie das Callback-Höllenproblem beim Exportieren eines Werts in eine SQL-Abfrage

<p>Mein Ziel ist es, <code>someVar</code> auf 1 zu setzen, wenn meine SQL-Abfrage ein Ergebnis findet. Das Problem ist, dass die Zuweisung lokal ist und wenn ich versuche, <code>console.log(someVar)</code> zu verwenden, ist das Ergebnis 1 innerhalb des Blocks, aber 0 außerhalb des Blocks. Gibt es eine Möglichkeit, die Werte außerhalb des Blocks zu exportieren? </p> <pre class="brush:js;toolbar:false;">let someVar = 0; con.query(`SOME SQL QUERY`, (error, rows) => { if (error) wirft einen Fehler aus if (rows.length > 0) { someVar = 1; //console.log(someVar) -> Das Ergebnis ist 1 } }); con.end(); //console.log(someVar) -> Das Ergebnis ist 0 if (someVar === 0) { //Ein bisschen Code } </pre></p>
P粉014218124P粉014218124412 Tage vor438

Antworte allen(1)Ich werde antworten

  • P粉545218185

    P粉5452181852023-09-05 18:56:24

    感谢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 (someVar === 0) {
        // Some code
    } else {
        // Some code
    }

    Antwort
    0
  • StornierenAntwort