Quel serait le meilleur moyen d'appeler une fonction d'un autre fichier, puis faire quelque chose d'autre si la première fonction est effectuée et renvoie true?
mailer.sendEmail(user.email, subject, text, function(){
//do something here if the function is done successfully, but it never gets called
});
3 Réponses :
à l'intérieur de votre fonction code> sendmail code>, vous devez ajouter ce rappel sous forme d'argument, puis l'appeler lorsque vous avez terminé.
mailer.sendEmail(user.email, subject, text, function(){
// do something here
});
<!-- With cb -->
module.exports = {
sendEmail: function(user, subject, text, callback) {
var smtpTransport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: config.email,
pass: config.gmlpwd
}
});
var mailOptions = {
to: user,
from: config.email,
subject: subject,
text: text
};
smtpTransport.sendMail(mailOptions, function(err) {
if (err) callback({ err })
callback({ result: "All is ok" })
});
}
}
//
var mailer = require('./file.js');
mailer.sendMail('go@mail.com', 'Hello world', 'Lorem ipsum dolor sit ammet', function({ err, result}){
if (err) {
console.log(err, '- Some error')
} else {
console.log(result, 'Some code here')
}
})
<!-- With Async promise -->
module.exports = {
sendEmail: new Promise(function(resolve, reject){
function(user, subject, text) {
var smtpTransport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: config.email,
pass: config.gmlpwd
}
});
var mailOptions = {
to: user,
from: config.email,
subject: subject,
text: text
};
smtpTransport.sendMail(mailOptions, function(err) {
if (err) reject({ err })
resolve({ result: 'All is ok result here'})
});
}
}
}
//
var mailer = require('./file.js');
mailer.sendMail('go@mail.com', 'Hello world', 'Lorem ipsum dolor sit ammet').then(function ({ result}) {
console.log( 'All is ok')
})
Je préfère utiliser Fichier1: usercontroller.js strong> p> fichier2: userUtils.js strong> p> Dans l'instance ci-dessus, nous appelons une fonction async / attendre code> dans ce cas, dans votre cas, il vous suffit de faire fonctionner vos fonctions avec des objets et de l'exporter, jetons un coup d'œil dans l'exemple ci-dessous. SearchAser () code> à partir de Usandutils code> qui retournera un tableau vide si des arguments sont présents sinon il lancera une erreur. C'est juste un simple cas-à-cas de compréhension de module.exports code> p> p>