【发布时间】:2022-01-15 18:58:12
【问题描述】:
在文件 users.js 中,我想从 randomCode() 中获取 code 以分配给 result 并在整个端点 '/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;
我尝试使用await,但没有结果。
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)
}
})
【问题讨论】:
-
为什么不直接使用 randomCode 作为辅助方法而不是控制器? crypto.randomInt 永远不会抛出错误,因此您可以跳过回调,只需返回代码并像这样使用它: const code = randomCode();但是,我真的没有看到您的代码有问题,控制台打印的是什么?
-
我在控制器中插入
randomCode()的原因是:找出:)我以前遇到过这种“问题”,但通常我跳过它并将功能从控制器移动到其他位置。 -
这完全公平,对你有好处!我尝试在 javascript 文件中复制它,这两个函数似乎都工作正常,所以问题一定出在其他地方。打印您的案例的 console.log 是什么?
-
在localhost:8000-------- 监听的示例应用程序已连接数据库.----- undefined-------- 568350 代码
标签: javascript node.js express