Узел.Код Js возвращает [обещание объекта], когда я пытаюсь отправить выходные данные

#node.js #reactjs #backend

Вопрос:

У меня есть кое-какой код от node.js сервер, который я пытаюсь отправить интерфейсному приложению. Когда я отображаю код в консоли, он отображается нормально, но когда я пытаюсь отправить данные на внешний интерфейс, он просто отображается как [Обещание объекта]. В функции app.get я хочу иметь возможность отправлять данные без их отображения в качестве обещания. Может ли кто-нибудь помочь вывести эти данные так, как я хочу?

 async function refresh() {  if (await h1.isOnline()) {  console.log(  "T1 : "   (await t1.get_currentValue())   (await t1.get_unit())  );   console.log(  "H1 : "   (await h1.get_currentValue())   (await h1.get_unit())  );  console.log(  "P1 : "   (await p1.get_currentValue())   (await p1.get_unit())  );  } else {  console.log("Module not connected");  }  setTimeout(refresh, 500); }  startDemo();  app.get("/", function (req, res) {  res.send("T1: "   t1.get_currentValue()); });  let port = process.env.PORT; if (port == null || port == "") {  port = 4000; }  

Комментарии:

1. Хотя я не вижу определения get_currentValue() , я предполагаю, что это асинхронные функции. Асинхронные функции всегда возвращают обещания. ждите обещания, а затем отправьте его.

Ответ №1:

Я предполагаю, что из ваших других примеров это t1.get_currentValue() возвращает обещание. Таким образом, вы должны использовать либо await или .then() , чтобы получить значение от этого обещания, и убедитесь, что вы также обрабатываете отказы:

 app.get("/", async function(req, res) {  try {  res.send('T1: '  await t1.get_currentValue());  } catch(e) {  console.log(e);  res.sendStatus(500);  } });  

или:

 app.get("/", function(req, res) {  t1.get_currentValue().then(val =gt; {  res.send('T1: '  val);  }).catch(e =gt; {  console.log(e);  res.sendStatus(500);  }) });