Coding and Programming

JavaScript-WaitFor-Umfrage

Written by smirow

Da immer mehr JavaScript-Entwickler asynchron schreiben, ist es nur natürlich, auf die Erfüllung von Bedingungen warten zu müssen. Dies gilt insbesondere in einer Welt, in der Zustandstests asynchron sind und keine explizite Antwort liefern. await. Ich habe darüber geschrieben waitForever, waitForTimeund JavaScript Polling in der Vergangenheit, aber ich wollte eine modernere Methode haben awaiting einen bestimmten Zustand. Werfen wir einen Blick auf diesen super nützlichen Artikel waitFor Funktion!

waitFor ist ein async Funktion, die es Entwicklern ermöglicht, eine Bedingungsfunktion, ein Abfrageintervall (in Millisekunden) und ein optionales Timeout (in Millisekunden) bereitzustellen.

// Polls every 50 milliseconds for a given condition
const waitFor = async (condition, pollInterval = 50, timeoutAfter) => {
  // Track the start time for timeout purposes
  const startTime = Date.now();

  while (true) {
    // Check for timeout, bail if too much time passed
    if(typeof(timeoutAfter) === 'number' && Date.now() > startTime + timeoutAfter) {
      throw 'Condition not met before timeout';
    }

    // Check for conditon immediately
    const result = await condition();

    // If the condition is met...
    if(result) {
      // Return the result....
      return result;
    }

    // Otherwise wait and check after pollInterval
    await new Promise(r => setTimeout(r, pollInterval));
  }
};

Die Verwendung dieser Funktion ist so einfach wie die Bereitstellung einer Bedingungsfunktion:

await waitFor(() => document.body.classList.has('loaded'));

Das Timing des Intervalls und des Timeouts ist ebenfalls einfach:

await waitFor(
  () => document.body.classList.has('loaded'),
  // Checks every 100 milliseconds
  100,
  // Throws if the "loaded" class isn't on the body after 1 second
  10000
);

In einer idealen Welt hätten Entwickler immer die Kontrolle darüber Promise es könnte sein await'wovon then'D. In der Praxis ist dies jedoch nicht immer der Fall, insbesondere in einer Testumgebung. In jeder Umgebung auf eine Bedingung warten zu können, ist eine absolute Notwendigkeit, also bewahren Sie diesen Ausschnitt in Ihrem Werkzeugkasten auf!

Fordern Sie echte Benutzerüberwachungsmetriken an
Fordern Sie echte Benutzerüberwachungsmetriken an

About the author

smirow

Leave a Comment