UNPKG

falcor-observable

Version:

An Observable implementation compatible with the Falcor DataSource API. Avoids try/catch.

26 lines (22 loc) 714 B
// @flow "use strict"; import type { ObservableInput } from "./es-observable"; const { Observable } = require("./es-observable"); const { tryCatchResult, symbolError, popError } = require("./try-catch"); function projectToObservable<T, R, E>( project: ?(value: T, i: number) => ObservableInput<R, E>, v: T, i: number ): Observable<R, E> { const result = typeof project === "function" ? tryCatchResult(project, v, i) : v; if (result === symbolError) { return Observable.throw((popError(): any)); } const obs = tryCatchResult(Observable.from, result); if (obs === symbolError) { return Observable.throw((popError(): any)); } return obs; } module.exports = { projectToObservable };