0
votes

Appeler une fonction d'un autre fichier et obtenez le résultat quand c'est fait?

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
});


0 commentaires

3 Réponses :


1
votes

à 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
});


0 commentaires

1
votes
      <!-- 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')
})

0 commentaires

0
votes

Je préfère utiliser async / attendre 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.

Fichier1: usercontroller.js xxx

fichier2: userUtils.js xxx

Dans l'instance ci-dessus, nous appelons une fonction SearchAser () à partir de Usandutils 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


0 commentaires