Kann Asynchronität in JavaScript „Await“ speichern?

Kann Asynchronität in JavaScript „Await“ speichern?

Ich wusste vorher, dass man await verwenden muss, um die Ergebnisse einer asynchronen Ausführung in JavaScript synchron zu erhalten. Wenn man in der For-Schleife kein Promise.All verwendet, funktioniert die Asynchronität nicht. Aber jedes Mal, wenn Sie auf das Ausführungsergebnis warten müssen, müssen Sie async und await verwenden. Ich finde, das ist mühsam und sieht nicht gut aus. Es wäre gut, wenn Sie sich an die Schreibweise dieser beiden Wörter erinnern würden. Wenn Sie sich diese aber nicht merken, werden Sie sie jedes Mal falsch schreiben, was Ihren Gedankengang unterbricht und es macht keinen guten Eindruck, wenn solche Wörter plötzlich auftauchen.

Ich habe also große Anstrengungen unternommen, um dieses Problem zu lösen. Als Programmierer, der oft stolz darauf ist, das Rad neu zu erfinden, halte ich es für meine Verantwortung, einen kleinen Beitrag zur Veränderung von JavaScript zu leisten.

Betrachten Sie den folgenden Code:

const trans = erforderlich('node-google-translate-skidz');

Funktion übersetzen (str, strEn, tarEn) {
  sei p = () => {
    returniere neues Promise((lösen, ablehnen) => {
      trans({
        Text: str,
        Quelle: strEn ? strEn : 'zh',
        Ziel: tarEn? tarEn: 'en'
      }, Funktion (Ergebnis) {
        lösen(Ergebnis.Übersetzung)
      });
    })
  }
  lass an = async () => {
    lass b = warte auf p()
    console.log(b);
  }
  returniere ein()
  //console.log(b)
}


lass c = übersetzen('Koreanisch')
console.log('c', c)

Dieser Code ist wahrscheinlich die beste Lösung, die mir zur Behebung des asynchronen Problems eingefallen ist, aber die Antwort ist immer noch erfolglos. Aber ich verstehe endlich, warum man in JavaScript , egal wie man es verpackt oder welche Technologie man verwendet, async und await nicht wirklich vermeiden kann.

Schauen Sie sich an, wo die Übersetzungsmethode aufgerufen wird, und drucken Sie das Übersetzungsergebnis nach dem Aufruf aus. Der Zweck dieser Vorgehensweise besteht natürlich darin, dass ich hoffe, es drucken zu können, nachdem ein Ergebnis vorliegt. Wenn Promise { <pending> }, bedeutet dies, dass es direkt ausgeführt wird, ohne zu warten.

Um den Zweck des Druckens nach Vorliegen des Ergebnisses zu erreichen, habe ich geschickt ein async()=>{await}, in translate gekapselt und translate dann das Ergebnis der await -Ausführung zurückgeben lassen. Aber diese Methode wird nicht funktionieren, denn das endgültige Druckergebnis ist immer noch das, was ich um jeden Preis vermeiden möchte

Warum? Weil ich vergessen habe, dass async nur mit function funktioniert, was bedeutet, dass async einen Gültigkeitsbereich hat. Nachdem ich die Methode let c = translate('中文') ausgeführt hatte, führte der Compiler translate 'c', c) aus, was Promise { <pending> } ausgab, da ich dem Compiler nicht mitgeteilt hatte, dass Translate „await“ benötigte (ich dachte, Translate hätte async und await console.log('c', c) implementiert, sodass translate automatisch auf die Rückgabe des Promise warten würde. Aufgrund der Existenz eines Gültigkeitsbereichs kann der Gültigkeitsbereich innerhalb von Translate jedoch die Ausführung translate Methode nicht beeinflussen.).

Durch die Einführung des Konzepts des Gültigkeitsbereichs können async und await im Methodenkörper nicht dazu führen, dass die Methodenaufrufebene auch async und await . Sie können wahrscheinlich verstehen, warum await bei der Asynchronität in JavaScript nicht weggelassen werden kann.

Damit ist der Artikel „Kann await in JavaScript-Asynchronität weggelassen werden?“ abgeschlossen. Weitere Informationen zur Asynchronität in JavaScript finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • JS Asynchronous Stack Tracing: Warum „await“ besser ist als „Promise“
  • So implementieren Sie asynchrone Aufrufe mit async/await in JS
  • NodeJs verarbeitet asynchrone Methoden über async/await
  • async/await und promise (Problem mit asynchronem Betrieb in nodejs)

<<:  Ladeanimation mit CSS3 implementiert

>>:  Eine kurze Erläuterung der Situationen in MySQL, die zu Indexfehlern führen

Artikel empfehlen

TypeScript verwendet vscode, um den Codekompilierungsprozess zu überwachen

Installieren Installieren Sie den TS-Befehl globa...

Vue Router lädt verschiedene Komponenten je nach Hintergrunddaten

Inhaltsverzeichnis Anforderungen aus der Projektp...

Stimmt es, dass der Webdesign-Stil umso besser ist, je einfacher er ist?

Ursprüngliche Adresse: http://www.webdesignfromsc...

So zeigen Sie Bilder im TIF-Format im Browser an

Der Browser zeigt Bilder im TIF-Format an Code kop...

WeChat-Applet: benutzerdefinierter TabBar-Schrittdatensatz

Inhaltsverzeichnis 1. Einleitung 2. Passen Sie de...

So erstellen Sie ein Apache-Image mit Dockerfile

Inhaltsverzeichnis 1. Docker-Image 2. Erstellen S...

Beispielcode für die Verwendung von @media in CSS3 zur Anpassung einer Webseite

Heutzutage wird die Bildschirmauflösung von Compu...

JavaScript-Komposition und Vererbung erklärt

Inhaltsverzeichnis 1. Einleitung 2. Vererbung der...

So verwenden Sie iostat zum Anzeigen der IO-Leistung von Linux-Festplatten

TOP-Beobachtung: Der Prozentsatz der CPU-Zeit, de...

So laden Sie die Kamera in HTML

Wirkungsdiagramm: Gesamtwirkung: Video wird gelad...