Я новичок в NodeJS и пытаюсь прочитать данные с счетчика энергии, связывающегося через COM, и показать в NodeJS.Когда я использую Promise в функции для возврата прочитанных данных из COM-порта, у меня возникает проблема, если время возврата превышает 5 секунд, потому что я установил его, он покажет системную ошибку.Я хочу, чтобы, если у меня были данные в течение 5 секунд, верните их мне.Если время превышает 5 секунд, я хочу получить «ложь».
function getMeterData(buffer) {
//Send request to Meter
meterConnect.write(buffer, function(err) {
if (err) {
console.log("Send request to Meter failed. Detail: " + err.message);
return false;
}
});
//Get data from the meter
return new Promise(function(resolve, reject) {
var timer = setTimeout(function() {
reject(false);
}, 5000);
meterData.on("data", function(dataReceive, err) {
if (err) {
console.log("The process of receiving data is faulty");
reject(err);
}
clearTimeout(timer);
resolve(dataReceive);
});
});
}
Код не завершается ошибкой, когда я передаю правильный буфер, и возвращается сразу, но если я отправляю неправильный буфер, нетметр вернет значение и через 5 секунд я хочу получить ложный результат.Но результат в том, что он возвращает кучу ошибок, если через 5 секунд нет значения.
(node:19664) UnhandledPromiseRejectionWarning: false
(node:19664) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:19664) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.