javascript class, метод, который возвращает возможную ошибку, чтобы обработать это - PullRequest
0 голосов
/ 02 мая 2020

У меня есть класс, я хотел бы, чтобы метод ошибки возвращал способ обработки его из объекта

class MyClass {
On(value){
     try{
     throw new Error("Massimo due candidati");
      }
      catch(e){
              console.log(e.name, e.message); //Error, I'm Evil
      }
}
}

Если я создаю объект класса, как я могу обработать ошибку в похожем путь?

var obj = new MyClass();
obj.on(value, err=> {
if (err) {
    onError(err.message);
  }else{
    console.log("Inserimento ok");
  }
});

Спасибо за внимание.

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

спасибо за вашу помощь. Я думаю, что в своей голове я хотел сделать это ...

class MyClass {
  onCallbacks = [];
  on(someArg, callback) {
    if (someArg != 'value') {
        this.onCallbacks.push(callback);
    }else{
    console.log("start ok");
    }
  }
  invokeOK() {
  //if (this.onCallbacks.length==0){return;}
    this.onCallbacks.forEach((callback) => {
      callback();
    });
  }
  invokeError() {
    this.onCallbacks.forEach((callback) => {
      callback(new Error('foo'));
    });
  }
}

const onError = console.error;
const obj = new MyClass();

obj.on('value', err => {
  if (err) {
    onError(err.message);
    console.log(err.message);
  }
});
obj.invokeError();
obj.invokeOK();

Если это кажется вам неправильным процессом, дайте мне знать.

0 голосов
/ 02 мая 2020

Когда вызывается .on, pu sh обратный вызов в массиве обратных вызовов, сохраненных объектом. Затем, всякий раз, когда запускается .on, повторяйте все обратные вызовы в массиве и вызывайте их (и, возможно, передавайте также аргумент ошибки):

class MyClass {
  onCallbacks = [];
  on(someArg, callback) {
    this.onCallbacks.push(callback);
  }
  invokeOK() {
    this.onCallbacks.forEach((callback) => {
      callback();
    });
  }
  invokeError() {
    this.onCallbacks.forEach((callback) => {
      callback(new Error('foo'));
    });
  }
}

const onError = console.error;
const obj = new MyClass();
obj.on('value', err => {
  if (err) {
    onError(err.message);
  } else {
    console.log("Inserimento ok");
  }
});

obj.invokeError();
obj.invokeOK();
...