sql >> Databáze >  >> RDS >> Mysql

Funkce návratu Javascript

Ano, je, stačí změnit způsob, jakým o kódu přemýšlíte. Místo psaní email_already_exists_in_mysql měli byste místo toho napsat funkci s názvem if_email_already_exists_in_mysql :

/* Executes callback if email
 * already exists in mysql:
 */
function if_email_already_exists_in_mysql (email,callback) {
    connection.query(
        'SELECT COUNT(*) AS nb FROM user WHERE emailUser = ' +
        connection.escape(email),

        function(err, rows, fields) {
            if(rows[0].nb != 0) {
                callback();
            }
        }
    )
}

Pak místo psaní tohoto:

//If the email hasn't a good format
if(email_not_good_format()) {
    //I do something
}
else if(email_already_exists_in_mysql(email)) {
    //I do something
}

místo toho to napíšete takto:

//If the email hasn't a good format
if(email_not_good_format()) {
    //I do something
}
else {if_email_already_exists_in_mysql(email),function(){
    //I do something
})}

Nyní se můžete ptát sami sebe, co když po tom bude další? No, musíte upravit if_email_already_exists_in_mysql funkce se chovat jako a if...else místo just a if :

function if_email_already_exists_in_mysql (email,callback,else_callback) {
    connection.query(
        'SELECT COUNT(*) AS nb FROM user WHERE emailUser = ' +
        connection.escape(email),

        function(err, rows, fields) {
            if(rows[0].nb != 0) {
                callback();
            }
            else if(else_callback) {
                else_callback();
            }
        }
    )
}

takže to můžete nazvat takto:

//If the email hasn't a good format
if(email_not_good_format()) {
    //I do something
}
else {
    if_email_already_exists_in_mysql(email),function(){
        //I do something
    },
    // else
    function(){
        //I do something else
    }
)}

Můžete napsat asynchronní kód, abyste dělali v podstatě cokoli, co běžný kód dokáže, pouze místo vracení hodnoty, kterou předáte zpětným voláním. Pamatujte:

návrat v synchronním kódu ==předávání zpětných volání v asynchronním kódu.

Struktura kódu proto musí být odlišná, ale jak jsem ukázal výše, logika, kterou chcete implementovat, může být naprosto stejná.




  1. Synchronizujte schéma dvou databází v MySQL

  2. MySQL automatické přetypování řetězce na celé číslo v klauzuli where?

  3. Jak migrovat úlohy serveru SQL z jedné instance serveru SQL Server do druhé

  4. Jak vypočítat medián v PostgreSQL