diff --git a/ivette/src/dome/renderer/dome.tsx b/ivette/src/dome/renderer/dome.tsx index 2a8a68cc9933190d65bcef63bc1f49bdeba9b617..afcb22e3a8b8354cc4496f8fcee198c2753925ee 100644 --- a/ivette/src/dome/renderer/dome.tsx +++ b/ivette/src/dome/renderer/dome.tsx @@ -532,8 +532,10 @@ export function usePromise<T>(job: Promise<T>) { const [loading, setLoading] = React.useState(true); React.useEffect(() => { let cancel = false; - const term = (a: any) => { if (!cancel) { setLoading(false); return a; } }; - job.then(term(setResult), term(setError)); + const doCancel = () => { if (!cancel) setLoading(false); return cancel}; + const onResult = (x: T) => { if (!doCancel()) setResult(x); }; + const onError = (e: Error) => {if (!doCancel()) setError(e); }; + job.then(onResult, onError); return () => { cancel = true; }; }, [job]); return { result, error, loading };