Похоже, ваш обработчик возвращает обещание, которое разрешается немедленно.Можете ли вы попытаться переписать последнюю строку следующим образом?
return si7021.reset()
.then((result) => readSensorData())
.catch((err) => console.error(`Si7021 reset failed: ${err}`));
Это может быть написано более чисто так:
const getStatus = async (req, res) => {
try {
const si7021 = new Si7021({ i2cBusNo: 1 });
await si7021.reset();
const data = await si7021.readSensorData();
console.log(data);
return send(res, 201, { data });
} catch (e) {
console.error(`Si7021 reset failed: ${err}`)
}
}
Но вы, вероятно, захотите что-то отправить в *Также обработчик 1007 *.
Кроме того, учтите, что обещание, возвращенное с
si7021.reset()
.then((result) => readSensorData());
, отклоняется только при сбое .reset
.Это также отклоняет readSensorData
терпит неудачу.Таким образом, ваше сообщение об ошибке не является полным.В целом, я бы лучше порекомендовал что-то вроде:
const getStatus = async (req, res) => {
try {
const si7021 = new Si7021({ i2cBusNo: 1 });
await si7021.reset();
const data = await si7021.readSensorData();
console.log(data);
send(res, 201, { data });
} catch (e) {
console.error(`Si7021 failed: ${err.message}`);
send(res, 500, err.message);
}
}