Skip to main content
The Deno 2 Release Candidate is here
Learn more
Module

x/delayed/mod.ts>interval

A simple module that provide an asynchronous approach to interval, delay and timeout
Latest
function interval
import { interval } from "https://deno.land/x/delayed@2.1.1/mod.ts";

Return an asynchronous generator that yield indefinitely the callback at least after the specified delay

Examples

Simple periodic execution

for await (const result of interval(fetch, 60_000, {}, 'https://api.example.com')) {
    console.log(result)
}
//log some api result every minutes

Periodic incremental fetching

const idRef = [1] //Use array to keep reference of the variable
function fetchUser([id]: number) {
    return fetch(`https://jsonplaceholder.typicode.com/users/${id}`)
}
for await (const response of interval(fetchUser, 500, {}, idRef)) {
    if (!response.ok) break
    const user = await response.json()
    console.log(user, idRef[0]++)
}
//print one of all 10 users every 500ms until get 404

Use abort controller

const ac = new AbortController()
let index = 0
for await (const user of interval(getUser, 500, ac, index++)) {
    user.delete()
}
//ac called elsewhere, eg: callback
ac.abort()
//abort interval before deleting all users

Type Parameters

TArgs extends unknown[]
optional
TYield = unknown

Parameters

callback: Callback<TArgs, TYield>
  • The function to be called after the delay.
delay: ms
  • The amount of time to wait before calling the callback.
optional
unnamed 2: { signal?: AbortSignal; } = [UNSUPPORTED]
  • The arguments for the callback
...args: TArgs

Returns

AsyncGenerator<TYield, void, void>

A promise that resolves to the value returned by the callback.