我正在使用Ionic 3应用程序,该应用程序在蓝牙打印机上打印账单。我有点迷茫,如何正确处理这段代码中的错误:
print(billToPrint){
return this.bluetoothSerial.list().then((data)=>{
if(data.length==0) throw new Error("no printer connected");
console.log(data);
console.log(data[0]);
let subscription=this.bluetoothSerial.connect(data[0].address).subscribe(data=>{
console.log("subscribnuto",data);
this.bluetoothSerial.write(billToPrint).then((data)=>{
console.log("data success", data);
});
subscription.unsubscribe();
},err=>{
throw new Error("Connection to printer failed");
});
},err=>{
console.log(err);
});
}
在这种情况下处理错误的正确方法是什么?我希望错误随具体的错误消息一起传播,因此我可以轻松地在页面中处理它们(此打印方法已投入使用)并显示错误消息警报。有任何想法吗?还是代码的结构不好?
答案 0 :(得分:0)
而不是引发这些错误。您可以使用alert()通知他们。
print(billToPrint){
return this.bluetoothSerial.list().then((data)=>{
if(data.length === 0){ Promise.reject(new Error("no printer connected"));}
// console.log(data);
// console.log(data[0]);
let subscription=this.bluetoothSerial.connect(data[0].address).subscribe(data=>{
if(data){
// console.log("subscribe",data);
this.bluetoothSerial.write(billToPrint).then((data)=>{
// console.log("data success", data);
Promise.resolve(true);
});
subscription.unsubscribe();
}else{
Promise.resolve(false);
}
},err=>{
Promise.reject(new Error("Connection to printer failed"));
});
},err=>{
Promise.reject(new Error("error your processing your request"));
});
}