UNPKG

ahooks

Version:
37 lines (36 loc) 1.06 kB
import { __awaiter } from "tslib"; import { useEffect } from 'react'; import { isFunction } from '../utils'; function isAsyncGenerator(val) { return isFunction(val[Symbol.asyncIterator]); } function useAsyncEffect(effect, deps) { useEffect(() => { const e = effect(); if (typeof e === 'function') { return e; } const asyncEffect = e; let cancelled = false; function execute() { return __awaiter(this, void 0, void 0, function* () { if (isAsyncGenerator(asyncEffect)) { while (true) { const result = yield asyncEffect.next(); if (result.done || cancelled) { break; } } } else { yield asyncEffect; } }); } execute(); return () => { cancelled = true; }; }, deps); } export default useAsyncEffect;