Inhaltsverzeichnis
Was ist eine asynchrone Funktion?
Migrieren Sie zu asynchronen Funktionen
3 Best Practices für asynchrone Funktionen
Verwenden Sie asynchrone Funktionen in Express.
Parallele Ausführung
Heim Web-Frontend js-Tutorial Lassen Sie uns darüber sprechen, wie Sie asynchrone Funktionen in Node verwenden

Lassen Sie uns darüber sprechen, wie Sie asynchrone Funktionen in Node verwenden

Dec 20, 2022 pm 09:16 PM
node async

Mit der neuen Version der V8-Engine unterstützt Node asynchrone Funktionsfunktionen ab 7.6. Am 31. Oktober dieses Jahres wurde auch Node.js 8 zu einer neuen Langzeit-Support-Version, sodass Sie asynchrone Funktionen bedenkenlos in Ihrem Code verwenden können. In diesem Artikel werde ich kurz vorstellen, was asynchrone Funktionen sind und wie sie die Art und Weise verändern können, wie wir Node.js-Anwendungen schreiben.

Lassen Sie uns darüber sprechen, wie Sie asynchrone Funktionen in Node verwenden

Was ist eine asynchrone Funktion?

Mit der asynchronen Funktion können Sie Promise-basierten asynchronen Code genau wie synchronen Code schreiben. Sobald Sie eine Funktion mit dem Schlüsselwort „async“ definiert haben, können Sie das Schlüsselwort „await“ innerhalb der Funktion verwenden. Wenn eine asynchrone Funktion aufgerufen wird, gibt sie ein Promise zurück. Wenn die asynchrone Funktion einen Wert zurückgibt, wird das Versprechen erfüllt; wenn in der Funktion ein Fehler ausgegeben wird, wird das Versprechen abgelehnt. [Verwandte Tutorial-Empfehlungen: nodejs-Video-Tutorial, Programmierlehre]

await-Schlüsselwort kann verwendet werden, um auf die Auflösung eines Versprechens zu warten und seinen implementierten Wert zurückzugeben. Wenn der an „await“ übergebene Wert kein Promise ist, wird der Wert in ein aufgelöstes Promise konvertiert.

const rp = require('request-promise')
async function main () {
 const result = await rp('https://google.com')
 const twenty = await 20
 // 睡个1秒钟
 await new Promise (resolve => {
  setTimeout(resolve, 1000)
 })
 return result
}
main()
 .then(console.log)
 .catch(console.error)
Nach dem Login kopieren

Migrieren Sie zu asynchronen Funktionen

Wenn Ihre Node.js-Anwendung Promise bereits verwendet, müssen Sie nur den ursprünglichen Kettenaufruf neu schreiben, um auf Ihr Promise zu warten.

Wenn Ihre Anwendung noch Rückruffunktionen verwendet, sollten Sie schrittweise auf die Verwendung asynchroner Funktionen umsteigen. Sie können diese neue Technologie bei der Entwicklung einiger neuer Funktionen nutzen. Wenn Sie alten Code aufrufen müssen, können Sie ihn einfach in ein Promise einbinden und auf die neue Art aufrufen.

Dazu können Sie die integrierte util.promisify-Methode verwenden:

const util = require('util')
const {readFile} = require('fs')
const readFileAsync = util.promisify(readFile)
async function main () {
 const result = await readFileAsync('.gitignore')
 return result
}
main()
 .then(console.log)
 .catch(console.error)
Nach dem Login kopieren

3 Best Practices für asynchrone Funktionen

Verwenden Sie asynchrone Funktionen in Express.

express unterstützt von Natur aus Promise, sodass asynchrone Funktionen in verwendet werden Express ist relativ einfach:

const express = require('express')
const app = express()
app.get('/', async (request, response) => {
 // 在这里等待 Promise
 // 如果你只是在等待一个单独的 Promise,你其实可以直接将将它作为返回值返回,不需要使用 await 去等待。
 const result = await getContent()
 response.send(result)
})
app.listen(process.env.PORT)
Nach dem Login kopieren

Aber wie Keith Smith betonte, weist das obige Beispiel ein ernstes Problem auf: Wenn das Versprechen schließlich abgelehnt wird, da es hier keine Fehlerbehandlung gibt, wird dieser Express-Routing-Prozess angehalten Der Server wird angehalten.

Um dieses Problem zu beheben, sollten Sie Ihren asynchronen Handler in eine Funktion einschließen, die Fehler behandelt:

const awaitHandlerFactory = (middleware) => {
 return async (req, res, next) => {
  try {
   await middleware(req, res, next)
  } catch (err) {
   next(err)
  }
 }
}
// 然后这样使用:
app.get('/', awaitHandlerFactory(async (request, response) => {
 const result = await getContent()
 response.send(result)
}))
Nach dem Login kopieren

Parallele Ausführung

Angenommen, Sie schreiben ein Programm, bei dem eine Operation zwei Eingaben erfordert, eine aus der Datenbank und die andere von ein externer Dienst:

async function main () {
 const user = await Users.fetch(userId)
 const product = await Products.fetch(productId)
 await makePurchase(user, product)
}
Nach dem Login kopieren

Was passiert in diesem Beispiel?

Ihr Code erhält zuerst den Benutzer,

dann das Produkt,

und schließlich die Zahlung.

Da es keine gegenseitige Abhängigkeit zwischen den ersten beiden Schritten gibt, können Sie diese tatsächlich parallel ausführen. Hier sollten Sie die Promise.all-Methode verwenden:

async function main () {
 const [user, product] = await Promise.all([
  Users.fetch(userId),
  Products.fetch(productId)
 ])
 await makePurchase(user, product)
}
Nach dem Login kopieren

Manchmal benötigen Sie nur den Rückgabewert des am schnellsten aufgelösten Promise – in diesem Fall können Sie die Promise.race-Methode verwenden.

Weitere Informationen zu Knoten finden Sie unter: nodejs-Tutorial!

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Sie asynchrone Funktionen in Node verwenden. 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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Ist Async für es6 oder es7? Ist Async für es6 oder es7? Jan 29, 2023 pm 05:36 PM

async ist es7. Async und Wait sind neue Ergänzungen zu ES7 und Lösungen für asynchrone Vorgänge. Man kann sagen, dass Async/Await syntaktischer Zucker für Co-Module und Generatorfunktionen ist und js asynchronen Code mit klarerer Semantik löst. Wie der Name schon sagt, bedeutet Async „asynchron“. Async wird verwendet, um zu deklarieren, dass eine Funktion asynchron ist. Es gibt eine strikte Regel zwischen Async und Wait.

So verwenden Sie Express für den Datei-Upload im Knotenprojekt So verwenden Sie Express für den Datei-Upload im Knotenprojekt Mar 28, 2023 pm 07:28 PM

Wie gehe ich mit dem Datei-Upload um? Der folgende Artikel stellt Ihnen vor, wie Sie Express zum Hochladen von Dateien im Knotenprojekt verwenden. Ich hoffe, er ist hilfreich für Sie!

So löschen Sie einen Knoten in NVM So löschen Sie einen Knoten in NVM Dec 29, 2022 am 10:07 AM

So löschen Sie einen Knoten mit nvm: 1. Laden Sie „nvm-setup.zip“ herunter und installieren Sie es auf dem Laufwerk C. 2. Konfigurieren Sie Umgebungsvariablen und überprüfen Sie die Versionsnummer mit dem Befehl „nvm -v“. install“-Befehl Knoten installieren; 4. Löschen Sie den installierten Knoten über den Befehl „nvm uninstall“.

Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Apr 03, 2023 pm 06:02 PM

In diesem Artikel stellen wir Ihnen das Prozessmanagement-Tool „pm2“ von Node vor und sprechen darüber, warum PM2 benötigt wird und wie Sie PM2 installieren und verwenden. Ich hoffe, dass es für alle hilfreich ist!

PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? Mar 05, 2025 pm 05:57 PM

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

Lassen Sie uns darüber sprechen, wie Sie mit pkg Node.js-Projekte in ausführbare Dateien packen. Lassen Sie uns darüber sprechen, wie Sie mit pkg Node.js-Projekte in ausführbare Dateien packen. Dec 02, 2022 pm 09:06 PM

Wie packe ich die ausführbare Datei von nodejs mit pkg? Im folgenden Artikel erfahren Sie, wie Sie mit pkg ein Node-Projekt in eine ausführbare Datei packen. Ich hoffe, dass er Ihnen weiterhilft!

Was tun, wenn npm node gyp ausfällt? Was tun, wenn npm node gyp ausfällt? Dec 29, 2022 pm 02:42 PM

npm node gyp schlägt fehl, weil „node-gyp.js“ nicht mit der Version von „Node.js“ übereinstimmt. Die Lösung ist: 1. Löschen Sie den Knotencache über „npm cache clean -f“ 2. Über „npm install -“ g n“ Installieren Sie das n-Modul. 3. Installieren Sie die Version „node v12.21.0“ über den Befehl „n v12.21.0“.

Tokenbasierte Authentifizierung mit Angular und Node Tokenbasierte Authentifizierung mit Angular und Node Sep 01, 2023 pm 02:01 PM

Die Authentifizierung ist einer der wichtigsten Teile jeder Webanwendung. In diesem Tutorial werden tokenbasierte Authentifizierungssysteme und ihre Unterschiede zu herkömmlichen Anmeldesystemen erläutert. Am Ende dieses Tutorials sehen Sie eine voll funktionsfähige Demo, die in Angular und Node.js geschrieben wurde. Traditionelle Authentifizierungssysteme Bevor wir zu tokenbasierten Authentifizierungssystemen übergehen, werfen wir einen Blick auf traditionelle Authentifizierungssysteme. Der Benutzer gibt seinen Benutzernamen und sein Passwort im Anmeldeformular ein und klickt auf „Anmelden“. Nachdem Sie die Anfrage gestellt haben, authentifizieren Sie den Benutzer im Backend, indem Sie die Datenbank abfragen. Wenn die Anfrage gültig ist, wird eine Sitzung mit den aus der Datenbank erhaltenen Benutzerinformationen erstellt und die Sitzungsinformationen werden im Antwortheader zurückgegeben, sodass die Sitzungs-ID im Browser gespeichert wird. Bietet Zugriff auf Anwendungen, die unterliegen

See all articles