Javascript-如何获取和使用值?

Javascript-如何获取和使用值?,javascript,express,Javascript,Express,我从这个例子中学到了很多东西,所以我的javascript基础不是很好。 我实际上是一名网络工程师,但我试图学习javascript编程。 好的,我尝试从Viktor Kirilov()实现物联网项目。 我有以下代码并从console.log获取输出,但无法在浏览器中显示。如何在浏览器中显示结果 const express = require('express'); const app = express(); const port = 3000; const getTemperature =

我从这个例子中学到了很多东西,所以我的javascript基础不是很好。 我实际上是一名网络工程师,但我试图学习javascript编程。 好的,我尝试从Viktor Kirilov()实现物联网项目。 我有以下代码并从console.log获取输出,但无法在浏览器中显示。如何在浏览器中显示结果

const express = require('express');
const app = express();
const port = 3000;
const getTemperature = require('./utils/temperature');

function getTemp() {
  setInterval(() => {
    getTemperature().then((temperature) => {
      temperature;
      console.log(temperature);
    });
  }, 1000);
};

var temp = getTemp();

app.get('/', (req, res) => {
  res.send(temp);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
}); 
utils/temperature.js

const exec = require('child_process').execSync;
const fs = require('fs');

exec('modprobe w1-gpio');
exec('modprobe w1-therm');

const DEVICES_DIR = '/sys/bus/w1/devices';

const files = fs.readdirSync(DEVICES_DIR);
const deviceFolder = files.find(file => /^28/.test(file));
const deviceFile = DEVICES_DIR + '/' + deviceFolder + '/w1_slave';

function getTemperature () {
  const readFilePromise = new Promise((resolve, reject) => {
    fs.readFile(deviceFile, 'utf8', (err, result) => {
      if (err) {
        return reject(err);
      }
      resolve(result);
    });
  });
  return readFilePromise.then(file => {
    const lines = file.split('\n');
    if (lines[0].substr(-3) !== 'YES') {
      throw new Error('Temperature device not connected');
    }
    const tempString = lines[1].split('t=')[1].trim();

    return parseFloat(tempString) / 1000.0;
  });
}

module.exports = getTemperature;
来自服务器的结果:

pi@raspberrypi:~/emotion $ node server.js 
Example app listening at http://localhost:3000
26.437
26.5
26.437
26.5
26.5
26.5
26.5
26.5
26.5
26.5
26.5
26.5
26.5
26.5
26.5
26.5
26.5
26.562
26.5
26.5
26.5
26.5
26.562
26.687
26.75
26.937

我只是张贴相关的代码,可能会帮助你解决这个问题

  async function getTemp(res) {
    await getTemperature()
     .then((temperature) => {
       res.send(JSON.stringify(temperature))
     })
     .catch(error => console.log(error))
 
  }
   
  app.get('/', async (_req, res) => {
    await getTemp(res);
  });
  • 您可以安全地从中间件中删除调用函数
    getTemp()
    temp
    变量。这个变量是多余的
  • 调用
    getTemp()
    直接传入响应对象
  • getTemp(res)
    async函数中,
    wait
    等待温度
  • 一旦承诺解决,发送严格化的响应。如果承诺失败,则将错误记录在catch块中

  • 这是否有帮助?

    您需要在express中创建一个路由,然后在浏览器中复制粘贴url。非常感谢,首先res.send(temperature)->我收到错误,在您更改为JSON.stringify(temperature)后,它会正确显示。这对我帮助很大!!!下一步我将尝试socketio,非常感谢。很高兴帮助我的朋友:)