Heim Web-Frontend js-Tutorial Lassen Sie uns darüber sprechen, welche „chemischen Reaktionen' ablaufen, wenn „await' in JS-Schleifen verwendet wird

Lassen Sie uns darüber sprechen, welche „chemischen Reaktionen' ablaufen, wenn „await' in JS-Schleifen verwendet wird

Mar 02, 2023 pm 05:22 PM
javascript await

Dieser Artikel vermittelt Ihnen relevantes Wissen über JavaScript-Schleifen. Er befasst sich hauptsächlich mit der Verwendung von „await“ in js-Schleifen und der Ergebnisanalyse. Ich hoffe, dass er für alle hilfreich ist.

Vorwort

Wie ist diese Frage entstanden? Als ich eines Tages etwas über asynchrones Wissen lernte, stieß ich auf eine Frage wie diese: Verwenden Sie Promise, um jede Sekunde einen Wert in einem Array auszugeben Ich habe gedacht, dass es auch gelöst werden kann, wenn ich nach der Ausgabe des Werts in einer Schleife eine Sekunde lang anhalte, also habe ich den folgenden Code:

const arr = [1, 2, 3]
arr.reduce((pre, cur) => {
  return pre.then(() => {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve(console.log(cur))
      }, 1000);
    })
  })
}, Promise.resolve())
Nach dem Login kopieren

Das Druckergebnis entspricht auch den Erwartungen. Hier habe ich die erste Frage generiert: Nicht Muss es nicht mit Async verwendet werden? Wie kann es hier alleine verwendet werden? (Wenn Sie mir nicht glauben, versuchen Sie, den Code in die Browserkonsole einzufügen.)

Dann habe ich for in forEach geändert und festgestellt, dass der Effekt überhaupt nicht erzielt wurde. Die zweite Frage stellte sich: Warum ist das Warten in forEach fehlgeschlagen?

Promise.resolve().then(() => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(console.log(1))
    }, 1000);
  })
}).then(() => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(console.log(2))
    }, 1000);
  })
}).then(() => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(console.log(3))
    }, 1000);
  })
})
Nach dem Login kopieren

Mit diesen beiden Fragen beginnen Sie zu studieren und nach Antworten zu suchen.

await in der for-Schleife

Ich erinnere mich, dass es beim Lernen von async/await ein Sprichwort gab, dass „await“ nur mit async verwendet werden kann. Tatsächlich ist dieser Satz nicht falsch. Warum kann ich dann direkt in die Browserkonsole schreiben? Wenn wir Code im Editor schreiben, müssen wir async verwenden. Das ist also ein Witz, haha, aber wenn ich auf etwas stoße Ich verstehe nicht, ich muss über eine andere Richtung nachdenken. Okay, wie oben erwähnt, spielt das Warten eine Rolle, indem es JS ermöglicht, zu warten, bis das Verarbeitungsergebnis per Versprechen zurückgegeben wird, und dann mit der Ausführung fortzufahren. Dann ist es auch möglich.

const arr = [1, 2, 3]
const sleep = (ms) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve()
    }, ms)
  })
}
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
  await sleep(1000)
}
Nach dem Login kopieren
arr.forEach(async item => {
  console.log(item);
  await sleep(1000)
})
Nach dem Login kopieren

Die Ergebnisse sind auch möglich entsprechend den Erwartungen. Sie können „await“ in der Schleife verwenden und den Effekt erzielen

await in der forEach-Schleife

Wie am Anfang wird der erwartete Effekt in „forEach“ nicht erreicht; forEach ist ungültig.

Dann sind die Erklärungen, die ich gesehen habe, wie folgt:

forEach in JavaScript unterstützt weder Promise Awareness noch Async und Wait, sodass Sie in forEach nicht verwenden können.

    map/forEach wird intern in Kombination mit einem Rückruf verwendet, um die Funktion auszuführen. Warten wartet nicht auf die Ausführung des Rückrufs.
  • forEach unterstützt nur synchronen Code.
  • Die zweite Möglichkeit, den Pseudocode in Zukunft zu vereinfachen lautet wie folgt:
  •  <script>  
       const arr = [1, 2, 3]
       const sleep = (ms) => {
         return new Promise((resolve, reject) => {
           setTimeout(() => {
             resolve()
           }, ms)
         })
       }
       const logByOneSecond = async () => {
         for (let i = 0; i < arr.length; i++) {
           console.log(arr[i]);
           await sleep(1000)
         }
       }   
       logByOneSecond()
     </script>
    Nach dem Login kopieren

    map/forEach ist eine einfache Ausführungsrückruffunktion und behandelt keine asynchronen Situationen. Das heißt: map/forEach erstellt mehrere Rückruffunktionen gleichzeitig und fügt mehrere Rückruffunktionen mit ihrer eigenen Asynchronität und Wartezeit hinzu, wie unten gezeigt.

    const logByForof = async () => {
      for (const item of arr) {
        console.log(item);
        await sleep(1000)
      }    
    }
    logByForof()
    Nach dem Login kopieren
    Jede Funktion ist unabhängig, und die Rückrufe der anderen sind ebenfalls unabhängig von der Anforderung ist asynchron, sie stehen in keinem Zusammenhang und die Reihenfolge kann nicht garantiert werden

    Zusammenfassung

    Überprüfte die Verwendung von async/await in Schleifenanweisungen. Bei gewöhnlichen for-Schleifen sind alle Wartevorgänge serielle Aufrufe. Ja, das können Sie Verwenden Sie es mit Zuversicht, einschließlich while, for-in, for-of usw.; Array-Methoden mit Rückrufen wie forEach, Map, Filter, Reduce usw. haben jedoch viele Nebenwirkungen, daher ist es am besten, dies nicht zu tun Verwenden Sie „await“.

    【Empfohlenes Lernen: Javascript-Tutorial für Fortgeschrittene

    Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, welche „chemischen Reaktionen' ablaufen, wenn „await' in JS-Schleifen verwendet wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

So verwenden Sie insertBefore in Javascript So verwenden Sie insertBefore in Javascript Nov 24, 2023 am 11:56 AM

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

See all articles