vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
71 lines (68 loc) • 1.63 kB
JavaScript
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;
}