提问者:小点点

SocketIO与温度传感器-我几乎做了DS18B20在我的树莓派与NodeJS和SocketIO,我如何提取promise{数据}?


我将DS18B20连接到Raspberry Pi,我尝试使用带React的NodeJS在浏览器上显示温度,我还使用SocketIO显示实时温度,因为温度总是变化的。

我有temperature.js从文件中获取温度,这是可以的。

我有app.js作为socketio的服务器,我试图调用函数,但它显示Promise{pending},然后我改成async/await,现在我可以得到温度,但在客户端是错误的。

app.js如下所示

const express = require('express');
const http = require('http');
const socketIO = require('socket.io');

const port = 4001;
const index = require('./routes/index');

const getTemperature = require('./utils/temperature');

const app = express();
app.use(index);

const server = http.createServer(app);

const io = socketIO(server);

let interval;

io.on("connection", (socket) => {
  console.log("New client connected");
  if(interval) {
    clearInterval(interval);
  }
  interval = setInterval(() => getApiAndEmit(socket), 1000);
  socket.on("disconnect", () => {
    console.log("Client disconnected");
    clearInterval(interval);
  });
});

async function broadcast() {
  var temp = await getTemperature();
  return temp;
}
var temperature = broadcast();

const getApiAndEmit = socket => {
  const response = temperature;
  console.log(response);
  socket.emit("FromAPI", response);
};

server.listen(port, () => console.log(`Listening on port ${port}`));

来自客户端的错误=“Objects is not valid as a React子级(Found:object with keys{})”

下面是console.log结果

Promise { 29.062 }
Promise { 29.062 }
Promise { 29.062 }
Promise { 29.062 }

如何从Promise{data}中获取数据???


共1个答案

匿名用户

可以试试这个:

广播()。then(t=>{console.log(t);});