UNPKG

ahooks

Version:
69 lines (68 loc) 2.05 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _tslib = require("tslib"); var _react = require("react"); var _utils = require("../utils"); function isAsyncGenerator(val) { return (0, _utils.isFunction)(val[Symbol.asyncIterator]); } function useAsyncEffect(effect, deps) { (0, _react.useEffect)(function () { var e = effect(); if (typeof e === 'function') { return e; } var asyncEffect = e; var cancelled = false; function execute() { return (0, _tslib.__awaiter)(this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() { var result; return _regenerator["default"].wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: if (!isAsyncGenerator(asyncEffect)) { _context.next = 5; break; } case 1: if (!true) { _context.next = 4; break; } _context.next = 2; return asyncEffect.next(); case 2: result = _context.sent; if (!(result.done || cancelled)) { _context.next = 3; break; } return _context.abrupt("continue", 4); case 3: _context.next = 1; break; case 4: _context.next = 6; break; case 5: _context.next = 6; return asyncEffect; case 6: case "end": return _context.stop(); } }, _callee); })); } execute(); return function () { cancelled = true; }; }, deps); } var _default = exports["default"] = useAsyncEffect;