Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

poll

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

poll

A simple poll function based on async, await, and an infinite loop

  • 2.0.1
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

poll

A simple poll function based on async, await, and an infinite loop.

Links:

  • npmjs.com/package/poll
  • github.com/kleinfreund/poll

Table of contents

Installation

Browser

Download the UMD bundle file …

curl -O https://raw.githubusercontent.com/kleinfreund/poll/main/dist/poll.js

… and use it like this:

const poll = window.poll.default

function fn() {
  console.log('Hello, beautiful!')
}

poll(fn, 1000)

Node

Install the npm package as a dependency …

npm install poll

… and import it like this:

  • CommonJS module

    const poll = require('poll').default
    
    function fn() {
      console.log('Hello, beautiful!')
    }
    
    poll(fn, 1000)
    
  • ES module

    import poll from 'poll/dist/poll.js'
    
    function fn() {
      console.log('Hello, beautiful!')
    }
    
    poll(fn, 1000)
    

Tests

In order to run the tests, clone the repository and run the following commands:

npm install
npm test

Documentation

Syntax

poll(function, delay[, shouldStopPolling])

Parameters:

  • function: Required. A function to be called every delay milliseconds. No parameters are passed to function upon calling it.

  • delay: Required. The delay (in milliseconds) to wait before calling the function again. If delay is negative, zero will be used instead.

  • shouldStopPolling: Optional. A function indicating whether to stop the polling process. The callback function is evaluated twice during one iteration of the internal loop:

    • After the result of the call to function was successfully awaited. In other words, right before triggering a new delay period.
    • After the delay has passed. In other words, right before calling function again.

    This guarantees two things:

    • A currently active execution of function will be completed.
    • No new calls to function will be triggered.

Return value:

None.

Examples

The poll function expects two parameters: A callback function and a delay. After calling poll with these parameters, the callback function will be called. After it’s done being executed, the poll function will wait for the specified delay. After the delay, the process starts from the beginning.

const pollDelayInMinutes = 10

async function getStatusUpdates() {
  const response = await fetch('/status')
  console.log(response)
}

poll(getStatusUpdates, pollDelayInMinutes * 60 * 1000)

Note that poll will not cause a second call to the callback function if the first call is still not finished. For example, it the endpoint /status does not respond and the server doesn’t time out the connection, poll will still be waiting for the callback function to fully resolve. It will not start the delay until the callback function is finished.

Stop polling

You can pass a callback function to poll for its last parameter. Its evaluated before and after calls to the polled function. If it evaluates to true, the poll function’s loop will stop and the function returns.

In the following example, the shouldStopPolling callback function evaluates to true after the setTimeout function called its anonymous callback function which sets stopPolling to true. The next time shouldStopPolling is evaluated, it will cause poll to exit normally.

let stopPolling = false
const shouldStopPolling = () => stopPolling

function fn() {
  console.log('Hello, beautiful!')
}

setTimeout(() => {
  stopPolling = true
}, 1000)

poll(fn, 50, shouldStopPolling)

Keywords

FAQs

Package last updated on 27 Mar 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc