UNPKG

taro-hooks

Version:
53 lines (52 loc) 2.26 kB
"use strict"; 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); } Object.defineProperty(exports, "__esModule", { value: true }); // private usePromise. do not use in outside var core_1 = require("@taro-hooks/core"); var shared_1 = require("@taro-hooks/shared"); var tool_1 = require("../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 _ref; var execMethod = (_ref = (0, shared_1.escapeState)(context)) == null ? void 0 : _ref[implementMethod]; if (!execMethod) return Promise.reject((0, tool_1.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 ((0, shared_1.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((0, tool_1.generateGeneralFail)(methodName, e.message)); } }); }; }; var _ref2 = (0, core_1.useState)(function () { return generator(context); }), exector = _ref2[0], setExector = _ref2[1]; var promiseLike = (0, core_1.useRef)(generator(context)); (0, core_1.useEffect)(function () { if (context && shared_1.ISREACT) { setExector(function () { return generator(context); }); } }, [context]); return shared_1.ISVUE ? promiseLike.current : exector; } exports["default"] = useActivePromise;