Maison  >  Questions et réponses  >  le corps du texte

Résoudre le problème de l'enfer des rappels lors de l'exportation d'une valeur dans une requête SQL

<p>Mon objectif est de définir <code>someVar</code> sur 1 si ma requête SQL trouve un résultat. Le problème est que l'affectation est locale et lorsque j'essaie d'utiliser <code>console.log(someVar)</code>, le résultat est 1 à l'intérieur du bloc, mais 0 à l'extérieur du bloc. Existe-t-il un moyen d'exporter les valeurs en dehors du bloc ? </p> <pre class="brush:js;toolbar:false;">let someVar = 0; con.query(`SOME SQL QUERY`, (erreur, lignes) => { si (erreur) renvoie une erreur if (lignes.longueur > 0) { uneVar = 1 ; //console.log(someVar) -> Le résultat est 1 } }); con.end(); //console.log(someVar) -> Le résultat est 0 si (uneVar === 0) { //Un peu de code } </pre></p>
P粉014218124P粉014218124411 Il y a quelques jours432

répondre à tous(1)je répondrai

  • P粉545218185

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

    Grâce à Fredrik, je l'ai réparé. J'ai fini par utiliser une promesse comme celle-ci

    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
    }

    répondre
    0
  • Annulerrépondre