UNPKG

@mittwald/react-use-promise

Version:

Simple and declarative use of Promises in your React components. Observe their state and refresh them in various advanced ways.

20 lines (19 loc) 721 B
import { defaultStorageKeyBuilder } from "../store/defaultStorageKeyBuilder.js"; import { AsyncResource } from "./AsyncResource.js"; import { asyncResourceStore } from "./store.js"; export function getAsyncResource(asyncFn, parameters, options = {}) { const { loaderId, tags } = options; if (parameters === null) { return AsyncResource.voidInstance; } const storageKey = defaultStorageKeyBuilder({ asyncFn, parameters, loaderId, }); const asyncResourceLoader = () => asyncFn(...parameters); const resourceBuilder = () => new AsyncResource(asyncResourceLoader); return asyncResourceStore.getOrSet(storageKey, resourceBuilder, { tags: tags, }); }