Skip to content

⬅️ Back to Table of Contents

📄 useTimeoutPoll

📊 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

Parameters:

  • fn () => Awaitable<void>
  • interval MaybeRefOrGetter<number>
  • options UseTimeoutFnOptions

Returns: Pausable

Calls:

  • useTimeoutFn (from @vueuse/shared)
  • shallowRef (from vue)
  • fn
  • start
  • resume
  • tryOnScopeDispose (from @vueuse/shared)
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,
  }
}

Internal helpers

Declared inside another function in this file.

loop(): Promise<void>

Returns: Promise<void>

Calls:

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

    await fn()
    start()
  }

resume(): void

Returns: void

Calls:

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

pause(): void

Returns: void

Code
function pause() {
    isActive.value = false
  }

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 not shown
immediateCallback boolean not shown

Generated by Syntax Scribe