callbag-catch-error

1.0.1 • Public • Published

callbag-catch-error

Callbag operator to catch errors thrown by pullable or listenable sources.

If you wonder what this is all about, you should definitely check out the awesome Callbag standard for reactive and iterable programming.

.

Behavior

  • Data from pullable and listenable sources without errors are passed to sinks.
  • Errors thrown by pullable and listenable sources get caught.
  • Pullable sources stop emitting on error as expected.
  • Listenable sources continue emitting after error as expected.

.

Example 1: Pullable stream

const { flatten, fromIter, fromPromise, map, pipe } = require('callbag-basics');
const iterate = require('callbag-iterate');
const fetch = require('isomorphic-unfetch');
const catchError = require('callbag-catch-error');
 
pipe(
  fromIter([0, 1]),
  map(n => `https://swapi.co/api/people/${n}`),
  map(url =>
    fetch(url).then(resp => {
      if (!resp.ok) {
        throw new Error('404 Not Found');
      }
 
      return resp.json();
    }),
  ),
  map(request => fromPromise(request)),
  flatten,
  catchError(err => console.log(err.message)),
  iterate(data => console.log(data.name)),
);
 
/*
 
Logs the following:
- 404 Not Found
 
*/

.

Example 2: Listenable stream

const { flatten, forEach, fromPromise, interval, map, pipe, take } = require('callbag-basics');
const fetch = require('isomorphic-unfetch');
const catchError = require('callbag-catch-error');
 
pipe(
  interval(10000),
  take(2),
  map(n => `https://swapi.co/api/people/${n}`),
  map(url =>
    fetch(url).then(resp => {
      if (!resp.ok) {
        throw new Error('404 Not Found');
      }
 
      return resp.json();
    }),
  ),
  map(request => fromPromise(request)),
  flatten,
  catchError(err => console.log(err.message)),
  forEach(data => console.log(data.name)),
);
 
/*
 
Logs the following:
- 404 Not Found
- Luke Skywalker
 
*/

Readme

Keywords

Package Sidebar

Install

npm i callbag-catch-error

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

123 kB

Total Files

10

Last publish

Collaborators

  • armanozak