Skip to content

Instantly share code, notes, and snippets.

@darrenderidder
Last active August 29, 2015 14:09
Show Gist options
  • Save darrenderidder/a4ccbd463146a254b22b to your computer and use it in GitHub Desktop.
Save darrenderidder/a4ccbd463146a254b22b to your computer and use it in GitHub Desktop.
I (heart)Callbacks
function greet(user, cb) {
users.findOne(user.name, function (err, result) {
if (err) {
cb(err);
} else {
var fullname = result.fullname;
var email = result.email;
var language = result.language;
greetings.findOne(language, function (err, result) {
if (err) {
cb(err);
} else {
var body = result + fullname;
nodemailer.send(email, body, function (err, result) {
if (err) {
cb(err);
} else {
cb(null, "Greeted " + fullname + " in " + language);
}
});
}
});
}
});
}
function greet(user, cb) {
users.findOne(user.name, getGreeting);
function getGreeting (err, result) {
if (err) {
cb(err);
} else {
var fullname = result.fullname;
var email = result.email;
var language = result.language;
greetings.findOne(language, sendGreeting);
}
function sendGreeting (err, result) {
if (err) {
cb(err);
} else {
var body = result + fullname;
nodemailer.send(email, body, showResult);
}
}
function showResult(err, result) {
if (err) {
cb(err);
} else {
cb(null, "Greeted " + fullname + " in " + language);
}
}
}
}
function greet(user, cb) {
// Putting shared variables in the outer scope
var fullname = null;
var email = null;
var language = null;
users.findOne(user.name, getGreeting);
function getGreeting (err, result) {
if (err) {
cb(err);
} else {
fullname = result.fullname;
email = result.email;
language = result.language;
greetings.findOne(language, sendGreeting);
}
}
function sendGreeting (err, result) {
if (err) {
cb(err);
} else {
var body = result + fullname;
nodemailer.send(email, body, showResult);
}
}
function showResult(err, result) {
if (err) {
cb(err);
} else {
cb(null, "Greeted " + fullname + " in " + language);
}
}
}
function greet(user, cb) {
var fullname = null;
var email = null;
var language = null;
users.findOne(user.name, getGreeting);
function getGreeting (err, result) {
if (err) {
return cb(err);
}
fullname = result.fullname;
email = result.email;
language = result.language;
greetings.findOne(language, sendGreeting);
}
function sendGreeting (err, result) {
if (err) {
return cb(err);
}
var body = result + fullname;
nodemailer.send(email, body, showResult);
}
function showResult(err, result) {
if (err) {
return cb(err);
}
cb(null, "Greeted " + fullname + " in " + language);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment