UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

71 lines (68 loc) 1.63 kB
import { run } from "./run.js"; import { wait } from "./wait.js"; var idCounter = 1; /** * 创建提交类行为。 * * @param options 选项 */ /** * 创建提交类行为。 * * @param options 选项 */ /** * 创建提交类行为。 * * @param options 选项 */ export function createSubmit(options) { var getPayload = function getPayload(id) { return { start: function start(message) { return run(function () { return options.start(message, id); }); }, fail: function fail(message, duration) { if (duration === void 0) { duration = 1500; } return run(function () { return options.fail(message, duration, id); }).then(function () { return wait(duration); }); }, success: function success(message, duration) { if (duration === void 0) { duration = 1500; } return run(function () { return options.success(message, duration, id); }).then(function () { return wait(duration); }); } }; }; var res = function res(action) { var id = idCounter++; return action(getPayload(id)).then(function (res) { return run(function () { return options.complete(id); }).then(function () { return res; }); }).catch(function (error) { if (options.throw) { options.throw(error, id); } return Promise.reject(error); }); }; var globalAction = getPayload(0); res.success = globalAction.success; res.fail = globalAction.fail; return res; }