从NodeJS中的函数返回数据的正确方法
我是Node的新手,所以我正努力将数据从一个函数传递到另一个函数:
//dhtController.js
exports.currentTemperature = async () => {
const rawTemp = await dhtSensor.read(22, 4); // { temperature: 24, humidity: 60 }
return rawTemp;
};
//dataController.js
const dhtController = require('./dhtController');
...
exports.getAllReadings = (req, res, next) => {
const currentTemp = dhtController.currentTemperature(); // undefined
res.status(200).json({
status: 'success',
currentTemp, // undefined
});
};
...
我也尝试在dataController中使用async / await-祝您好运。旧的回调方式有效,但是我宁愿保持一致并使用async / await。
有人可以在这里帮助我吗?我想念什么?我的猜测是,在我的dataController中,结果尚未出现在事件循环中。但是,“等待”它们并没有帮助。
回答如下:由于要调用的函数使用await,因此需要使要调用的函数异步。这很有意义,因为您正在等待结果。
exports.getAllReadings = async (req, res, next) => {
const currentTemp = await dhtController.currentTemperature();
res.status(200).json({
status: 'success',
currentTemp, // undefined
});
};