JavaScript waitFor Polling







As extra of the JavaScript builders write turns into asynchronous, it is solely pure to want to attend for circumstances to be met. That is very true in a world with asynchronous testing of circumstances which do not present an specific await. I’ve written about waitForever, waitForTime, and JavaScript Polling up to now, however I needed to have a extra fashionable method of awaiting a given state. Let’s take a look at this tremendous helpful waitFor operate!

waitFor is an async operate that permits builders to offer a situation operate, polling interval (in milliseconds), and non-compulsory timeout (in milliseconds).

// Polls each 50 milliseconds for a given situation
const waitFor = async (situation, pollInterval = 50, timeoutAfter) => {
  // Monitor the beginning time for timeout functions
  const startTime =;

  whereas (true) {
    // Verify for timeout, bail if an excessive amount of time handed
    if(typeof(timeoutAfter) === 'quantity' && > startTime + timeoutAfter) {
      throw 'Situation not met earlier than timeout';

    // Verify for conditon instantly
    const end result = await situation();

    // If the situation is met...
    if(end result) {
      // Return the end result....
      return end result;

    // In any other case wait and test after pollInterval
    await new Promise(r => setTimeout(r, pollInterval));

Utilizing this operate is so simple as simply offering a situation operate:

await waitFor(() => doc.physique.classList.has('loaded'));

Timing out the interval and timeout can be easy:

await waitFor(
  () => doc.physique.classList.has('loaded'),
  // Checks each 100 milliseconds
  // Throws if the "loaded" class is not on the physique after 1 second

In a really perfect world, builders would all the time have a deal with on the Promise that could possibly be await‘d or then‘d. In observe, nevertheless, that is not all the time the case, particularly in a testing surroundings. Having the ability to await a situation in any surroundings is an absolute should, so maintain this snippet in your toolbox!

Supply hyperlink
Share this


Google Presents 3 Suggestions For Checking Technical web optimization Points

Google printed a video providing three ideas for utilizing search console to establish technical points that may be inflicting indexing or rating issues. Three...

A easy snapshot reveals how computational pictures can shock and alarm us

Whereas Tessa Coates was making an attempt on wedding ceremony clothes final month, she posted a seemingly easy snapshot of herself on Instagram...

Recent articles

More like this


Please enter your comment!
Please enter your name here