This package has been deprecated

Author message:

channel has been renamed to repeater, see https://github.com/repeaterjs/repeater/issues/18 for the rationale and https://github.com/repeaterjs/repeater/pull/28 for an upgrade guide. Apologies.

@channel/timers
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

@channel/timers

This package is experimental!

Cancelable timers, implemented with channels

For more information, visit channel.js.org.

function delay(wait: number): Channel<number>;

delay returns a channel which yields Date.now() wait milliseconds after next is called. Each call to next runs an independent timer. All outstanding timers can be canceled by calling return.

function timeout(wait: number): Channel<undefined>;

timeout returns a channel which rejects with a TimeoutError if the channel does not receive another call to next or return after the specified wait. This behavior is useful when you want to place a fixed upper bound on how long each iteration of an async iterator can take with Channel.race.

import { Channel } from "@channel/channel";
import { timeout } from "@channel/timers";

const chan = new Channel(async (push) => {
  await push(1);
  await push(2);
  await new Promise((resolve) => setTimeout(resolve, 2000));
  await push(3);
});

try {
  (async () => {
    for await (const num of Channel.race([chan, timeout(1000)])) {
      console.log(num); // 1, 2
    }
  })();
} catch (err) {
  console.log(err); // TimeoutError: 1000 ms elapsed
}
function interval(wait: number, buffer?: ChannelBuffer<number>): Channel<number>;

interval returns a channel which resolves with the current timestamp every wait milliseconds. The timer does not start until you call next on the returned iterator, and can be canceled by calling return.

/@channel/timers/

    Package Sidebar

    Install

    npm i @channel/timers

    Weekly Downloads

    1

    Version

    0.2.1

    License

    MIT

    Unpacked Size

    26 kB

    Total Files

    9

    Last publish

    Collaborators

    • brainkim