Ja, dat is zo, je hoeft alleen maar de manier waarop je over code denkt te veranderen. In plaats van email_already_exists_in_mysql
. te schrijven je zou in plaats daarvan een functie moeten schrijven met de naam 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();
}
}
)
}
In plaats van dit te schrijven:
//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
}
je schrijft het in plaats daarvan als volgt:
//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
})}
Nu vraag je je misschien af, wat als er daarna nog iemand anders is? Welnu, je moet de if_email_already_exists_in_mysql
aanpassen functie om zich te gedragen als en if...else
in plaats van alleen en 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();
}
}
)
}
zodat je het zo kunt noemen:
//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
}
)}
U kunt asynchrone code schrijven om vrijwel alles te doen wat normale code alleen kan doen in plaats van een waarde terug te geven die u in een callback doorgeeft. Onthoud:
retour in synchrone code ==doorgeven in callbacks in asynchrone code.
De codestructuur moet daarom anders zijn, maar zoals ik hierboven heb aangetoond, kan de logica die u wilt implementeren precies hetzelfde zijn.