Heim >Web-Frontend >js-Tutorial >Wie kann die Rate von API-Anfragen mithilfe von Async/Await und setTimeout effektiv gesteuert werden?

Wie kann die Rate von API-Anfragen mithilfe von Async/Await und setTimeout effektiv gesteuert werden?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 17:38:11592Durchsuche

How to Effectively Control the Rate of API Requests Using Async/Await and setTimeout?

Kombination der Async-Funktion Await setTimeout

In diesem Codeausschnitt versucht die asyncGenerator-Funktion, die async-await-Funktionen zum Verarbeiten einer Liste zu nutzen von Dateien aus der Google API. Allerdings wird die while-Schleife zu schnell ausgeführt, was zu übermäßig vielen API-Anfragen pro Sekunde führt. Um dieses Problem zu beheben, versucht der Entwickler, eine Schlaffunktion, listFiles, einzuführen, um die API-Anfragen zu verzögern.

Die Schlaffunktion soll die Ausführung der listFiles-Funktion um 3000 Millisekunden verzögern. Der Code funktioniert jedoch nicht wie vorgesehen. Das Problem liegt in der setTimeout-Funktion, die nativ kein Versprechen zurückgibt, das abgewartet werden kann.

Um dieses Problem zu beheben, ist es notwendig, die setTimeout-Funktion über die Timeout-Hilfsfunktion zu versprechen:

function timeout(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

Zusätzlich kann die Schlaffunktion geändert werden, um die Timeout-Hilfsfunktion zu verwenden:

async function sleep(fn, ...args) {
    await timeout(3000);
    return fn(...args);
}

Alternativ: Um die While-Schleife zu verlangsamen, ohne eine Callback-basierte Sleep-Funktion zu verwenden, kann der folgende Ansatz verwendet werden:

while (goOn) {
  // other code
  var [parents] = await Promise.all([
      listFiles(nextPageToken).then(requestParents),
      timeout(5000)
  ]);
  // other code
}

Dieser Ansatz stellt sicher, dass die Berechnung der Eltern mindestens 5 Sekunden dauert, wodurch die Schleife effektiv verlangsamt wird .

Das obige ist der detaillierte Inhalt vonWie kann die Rate von API-Anfragen mithilfe von Async/Await und setTimeout effektiv gesteuert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn