UNPKG

taro-hooks

Version:
48 lines 2.18 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // private usePromise. do not use in outside import { useEffect, useRef, useState } from '@taro-hooks/core'; import { isFunction, escapeState, ISVUE, ISREACT } from '@taro-hooks/shared'; import { generateGeneralFail } from '../utils/tool'; // may some method will init be undefined, use effect to watch recacu! emmm~ vue static in after! function useActivePromise(implementMethod, context) { var generator = function generator(context) { return function (options) { var _escapeState; var execMethod = (_escapeState = escapeState(context)) == null ? void 0 : _escapeState[implementMethod]; if (!execMethod) return Promise.reject(generateGeneralFail(implementMethod, 'please input a valid method name')); // @ts-ignore var methodName = implementMethod != null ? implementMethod : 'usePromise::implementMethod'; return new Promise(function (resolve, reject) { try { if (isFunction(execMethod)) { var _execMethod; var payload = options || {}; (_execMethod = execMethod(_extends({}, payload, { success: resolve, fail: reject }))) == null ? void 0 : _execMethod["catch"] == null ? void 0 : _execMethod["catch"](reject); } else { throw new TypeError("[" + methodName + "] not vaild for Taro"); } } catch (e) { reject(generateGeneralFail(methodName, e.message)); } }); }; }; var _useState = useState(function () { return generator(context); }), exector = _useState[0], setExector = _useState[1]; var promiseLike = useRef(generator(context)); useEffect(function () { if (context && ISREACT) { setExector(function () { return generator(context); }); } }, [context]); return ISVUE ? promiseLike.current : exector; } export default useActivePromise;