Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

258
Views
Get variable out from function which is calling export.modules node.js

In the file users.js I want to get code out of randomCode() to assign to the result and use it in whole endpoint '/login'.

randomCode.js

const crypto = require('crypto')

const randomCode = (callback) =>{
    crypto.randomInt(100000, 999999, (err, n) => {
        if (err) throw err;
        callback(n);
    });
}
    
module.exports = randomCode

users.js

require('dotenv').config()
const express = require('express')
const router = express.Router()
const randomCode = require('../controllers/randomCode')


router.get('/login', async (req, res, next)=>{
    try{
//-----------------------------------------------------
        randomCode((code) => {
          console.log(code,'code')
        })
//-----------------------------------------------------
        return res.send('ok')
    }
    catch(error){
        res.send(error)
    }
})

module.exports = router;

I tried to use await but whithout results.

router.get('/login', async (req, res, next)=>{
    try{
//------------------------------------------------------
        const result = await randomCode((code) => {
          console.log(code,'code')
        })
        console.log(result)
//------------------------------------------------------
        return res.send('ok')
    }
    catch(error){
        res.send(error)
    }
})
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

There would be different approaches (especially as crypto.randomInt could be called synchronously), but I understand you are specifically interested in how to get a value from an asynchronous function, so I'll answer that:

const randomCode = function(){
  return new Promise((resolve, reject) => {
    crypto.randomInt(100000, 999999, (err, n) => {
      if( err ){
        reject( err );
      } else {
        resolve( n );
      }
    });
  });
}
router.get('/login', async (req, res, next)=>{
  try{
    const code = await randomCode();
    console.log(code)
    return res.send('ok')
  }
  catch(error){
    res.send(error)
  }
})

In cases where you can not change the randomCode() function for some reason, you need to wrap it into a Promise, like:

const randomCodePromise = function(){
    return new Promise((resolve, reject) => {
        randomCode((code) => {
            resolve( code );
        })
    });
}

(and obviously then use await randomCodePromise() instead of await randomCode())

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!