| 1234567891011121314151617181920212223242526272829303132333435363738 |
- import { ref } from 'vue'
- const isGlobalLoading = ref(false)
- let loadingStartTime = null
- export const useLoading = () => {
- const showLoading = () => {
- isGlobalLoading.value = true
- loadingStartTime = Date.now()
- }
- const hideLoading = () => {
- if (!loadingStartTime) {
- isGlobalLoading.value = false
- return
- }
- // 최소 300ms 동안 로딩을 표시
- const elapsedTime = Date.now() - loadingStartTime
- const minLoadingTime = 300
- if (elapsedTime < minLoadingTime) {
- setTimeout(() => {
- isGlobalLoading.value = false
- loadingStartTime = null
- }, minLoadingTime - elapsedTime)
- } else {
- isGlobalLoading.value = false
- loadingStartTime = null
- }
- }
- return {
- isGlobalLoading,
- showLoading,
- hideLoading
- }
- }
|