@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
JavaScript
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,
});
}