RxJS Бросить ошибку через NodeEventHandler в fromEventPattern - PullRequest
1 голос
/ 22 мая 2019

Если я использую fromEventPattern, а в пользовательском API есть отдельный обработчик ошибок, как я могу выбросить их в поток через функцию-обработчик (NodeEventHandler)?

import { fromEventPattern } from 'rxjs';

const token = someAPI.registerEventHandler(function(event) {}, function(error) {}); // API takes a second function for errors.
someAPI.unregisterEventHandler(token); 

const someAPIObservable = fromEventPattern(
  function(handler) { return someAPI.registerEventHandler(handler, handler); }, // What should be the second argument here, in order to throw the error to any subscribers
  function(handler, token) { someAPI.unregisterEventHandler(token); } 
);

Я мог бы вызвать обработчик с ошибкой (как указано выше) и затем передать полученную наблюдаемую наблюдаемую информацию, возвращенную из fromEventPattern, чтобы проверить тип, но он выглядит немного многословно:

pipe(
      map((x: unknown) => {
        if (x instanceof Error) throw x;
        return x;
      }),

subject (который я пытаюсь заменить на fromEventPattern) имеет определенный .error() метод. Что позволит избежать всего ручного трубопровода и проверки типа.

1 Ответ

1 голос
/ 22 мая 2019

попробуйте эту обертку

const yourEventObservable=new Observable(obs=>{
  const token=someAPI.registerEventHandler(res=>{
    if (res instanceof Error) 
       obs.error(x);
     obs.next(res)
  })
  return ()=>someAPI.unregisterEventHandler(token);
}).pipe(share())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...