【发布时间】:2016-01-06 05:26:43
【问题描述】:
当promise被拒绝时,我该如何处理serial?
dispose 函数为被拒绝的 Promise 打印错误。
未处理的拒绝类型错误:无法调用方法“isOpen”的 未定义
var pingPort = function(port){
return new promise(function(resolve, reject){
var serial = new com.SerialPort(port.comName, {
baudrate: 19200,
parser: com.parsers.readline(lineEnd)
}, false);
serial.on("data", function(data){
if (data === responseUuid){
resolve(serial);
}
});
serial.open(function(err){
if (err){
//reject(serial)
}
else{
serial.write(pingUuid + lineEnd);
}
});
});
};
var dispose = function(port){
console.log(port.isOpen());
};
var findPort = function(){
com.listAsync().map(function(port){
return pingPort(port).timeout(100).catch(promise.TimeoutError, function(err) {
console.log("Ping timout: " + port.comName);
dispose(port);
}).catch(function(err){
console.log("Ping error: " + port.comName);
dispose(port);
});
}).each(dispose);
}();
【问题讨论】:
-
没有足够的上下文(或问题)来回答这个问题。一个明显的缺陷是端口必须是
undefined某处才会发生该错误。 -
您说“...处置序列...”但
dispose()接受port。是哪个? -
是的,抱歉命名不当。我最终删除了 bluebird 并改用回调。
标签: javascript node.js serial-port promise bluebird