Skip to content

⬅️ Back to Table of Contents

📄 index.ts

📊 Analysis Summary

Metric Count
🔧 Functions 4
📦 Imports 8
⚡ Async/Await Patterns 2
📐 Interfaces 1

📚 Table of Contents

🛠️ File Location:

📂 packages/core/useTimeoutPoll/index.ts

📦 Imports

Name Source
Awaitable @vueuse/shared
Pausable @vueuse/shared
UseTimeoutFnOptions @vueuse/shared
MaybeRefOrGetter vue
isClient @vueuse/shared
tryOnScopeDispose @vueuse/shared
useTimeoutFn @vueuse/shared
shallowRef vue

Async/Await Patterns

Type Function Await Expressions Promise Chains
await-expression useTimeoutPoll fn() none
async-function loop fn() none

Functions

useTimeoutPoll(fn: () => Awaitable<void>, interval: MaybeRefOrGetter<number>, options: UseTimeoutFnOptions): Pausable

Code
export function useTimeoutPoll(
  fn: () => Awaitable<void>,
  interval: MaybeRefOrGetter<number>,
  options: UseTimeoutFnOptions = {},
): Pausable {
  const {
    immediate = true,
    immediateCallback = false,
  } = options

  const { start } = useTimeoutFn(loop, interval, { immediate })

  const isActive = shallowRef(false)

  async function loop() {
    if (!isActive.value)
      return

    await fn()
    start()
  }

  function resume() {
    if (!isActive.value) {
      isActive.value = true
      if (immediateCallback)
        fn()
      start()
    }
  }

  function pause() {
    isActive.value = false
  }

  if (immediate && isClient)
    resume()

  tryOnScopeDispose(pause)

  return {
    isActive,
    pause,
    resume,
  }
}
  • Parameters:
  • fn: () => Awaitable<void>
  • interval: MaybeRefOrGetter<number>
  • options: UseTimeoutFnOptions
  • Return Type: Pausable
  • Calls:
  • useTimeoutFn (from @vueuse/shared)
  • shallowRef (from vue)
  • fn
  • start
  • resume
  • tryOnScopeDispose (from @vueuse/shared)

loop(): Promise<void>

Code
async function loop() {
    if (!isActive.value)
      return

    await fn()
    start()
  }
  • Return Type: Promise<void>
  • Calls:
  • fn
  • start

resume(): void

Code
function resume() {
    if (!isActive.value) {
      isActive.value = true
      if (immediateCallback)
        fn()
      start()
    }
  }
  • Return Type: void
  • Calls:
  • fn
  • start

pause(): void

Code
function pause() {
    isActive.value = false
  }
  • Return Type: void

Interfaces

UseTimeoutPollOptions

Interface Code
export interface UseTimeoutPollOptions {
  /**
   * Start the timer immediately
   *
   * @default true
   */
  immediate?: boolean

  /**
   * Execute the callback immediately after calling `resume`
   *
   * @default false
   */
  immediateCallback?: boolean
}

Properties

Name Type Optional Description
immediate boolean
immediateCallback boolean