sard-uniapp
Version:
sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
41 lines (40 loc) • 1.02 kB
JavaScript
import { readonly, ref } from 'vue';
export function useSingleTask() {
const isWorking = ref(false);
let listeners = [];
async function startTask(task) {
if (!isWorking.value) {
isWorking.value = true;
await task();
isWorking.value = false;
listeners.forEach((handler) => {
handler();
});
listeners = [];
}
}
function onFinishTask(handler) {
if (isWorking.value) {
if (!listeners.includes(handler)) {
listeners.push(handler);
}
}
else {
handler();
}
}
function offFinishTask(handler) {
if (isWorking.value) {
const index = listeners.indexOf(handler);
if (index !== -1) {
listeners.splice(index, 1);
}
}
}
return {
isWorking: readonly(isWorking),
startTask,
onFinishTask,
offFinishTask,
};
}