Skip to content

Instantly share code, notes, and snippets.

@pantos27
Created April 13, 2024 11:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pantos27/9e235b9a3baaa10f74f01d50e5752716 to your computer and use it in GitHub Desktop.
Save pantos27/9e235b9a3baaa10f74f01d50e5752716 to your computer and use it in GitHub Desktop.
A typescript way to use React Suspnse blocks with simple promises
const promiseWrapper = <T> (promise: Promise<T>): () => T => {
let status = "pending";
let result: T;
const s = promise.then(
(value) => {
status = "success";
result = value;
},
(error) => {
status = "error";
result = error;
}
);
return () => {
switch (status) {
case "pending":
throw s;
case "success":
return result;
case "error":
throw result;
default:
throw new Error("Unknown status");
}
};
};
export default promiseWrapper;
@pantos27
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment