Правильная обработка ошибок - в javascript / Ionic - PullRequest
0 голосов
/ 24 августа 2018

Я работаю над приложением Ionic 3, которое печатает счета на bluetooth-принтере. И я немного растерялся, как правильно обрабатывать ошибки в этом фрагменте кода:

  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);
    });
  }

Как правильно обрабатывать ошибки в этом случае? Я хочу, чтобы ошибки распространялись с конкретными сообщениями об ошибках, чтобы я мог легко обрабатывать их на своей странице (этот метод печати работает) и показывать предупреждение с сообщением об ошибке. Есть идеи? Или структура кода плохая?

1 Ответ

0 голосов
/ 24 августа 2018

Вместо того, чтобы выбрасывать эти ошибки. Вы можете уведомить их, используя 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"));
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...