UNPKG

vlens

Version:

Data Centric Routing & Rendering Mini-Framework

29 lines (24 loc) 719 B
import * as rpc from "./rpc" import * as core from "./core" export interface Data<T> { data: T | null; error: string; loading: boolean; } export function makeData<T>(): Data<T> { return { data: null, error: "", loading: false } } export type RemoteProc<In, Out> = (data: In) => Promise<rpc.Response<Out>> // Fetch the data and refresh the UI during and after load export async function fetch<In, Out>(data: Data<Out>, proc: RemoteProc<In, Out>, params: In): Promise<any> { data.loading = true; core.scheduleRedraw() return proc(params).then(([resp, error]) => { data.loading = false; data.data = resp data.error = error core.scheduleRedraw(); }) }