taro-hooks
Version:
为 Taro 而设计的 Hooks Library
28 lines • 1.44 kB
JavaScript
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); }
import { isFunction } from '@taro-hooks/shared';
import { generateGeneralFail } from '../utils/tool';
function usePromise(implementMethod) {
return function (options) {
var _implementMethod$name;
if (!implementMethod) return Promise.reject(generateGeneralFail(implementMethod, 'please input a valid method name'));
// @ts-ignore
var methodName = (_implementMethod$name = implementMethod == null ? void 0 : implementMethod.name) != null ? _implementMethod$name : 'usePromise::implementMethod';
return new Promise(function (resolve, reject) {
try {
if (isFunction(implementMethod)) {
var _implementMethod;
var payload = options || {};
(_implementMethod = implementMethod(_extends({}, payload, {
success: resolve,
fail: reject
}))) == null ? void 0 : _implementMethod["catch"] == null ? void 0 : _implementMethod["catch"](reject);
} else {
throw new TypeError("[" + methodName + "] not vaild for Taro");
}
} catch (e) {
reject(generateGeneralFail(methodName, e.message));
}
});
};
}
export default usePromise;