Security News
Bun 1.2 Released with 90% Node.js Compatibility and Built-in S3 Object Support
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
A simple poll function based on async, await, and an infinite loop.
Links:
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)
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)
In order to run the tests, clone the repository and run the following commands:
npm install
npm test
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:
function
was successfully awaited. In other words, right before triggering a new delay period.delay
has passed. In other words, right before calling function
again.This guarantees two things:
function
will be completed.function
will be triggered.Return value:
None.
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.
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)
FAQs
A simple poll function based on async, await, and an infinite loop
We found that poll demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
Security News
Biden's executive order pushes for AI-driven cybersecurity, software supply chain transparency, and stronger protections for federal and open source systems.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.