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

JavaScript implementiert das mobile Puzzlespiel mit neun Rastern

In diesem Artikel wird der spezifische Code für J...

MySql-Wissenspunkte: Transaktion, Index, Sperrprinzip und Nutzungsanalyse

Dieser Artikel erläutert anhand von Beispielen di...

Analyse von Mysql-Datenmigrationsmethoden und -Tools

In diesem Artikel wird hauptsächlich die Analyse ...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15

In diesem Artikel wird die Installations- und Kon...

Tutorial zur manuellen Installation von MySQL 8.0.13

In diesem Artikel finden Sie das Tutorial zur man...

JavaScript implementiert die Klick-Umschaltfunktion

In diesem Artikelbeispiel wird der spezifische Ja...

Eine kurze Erläuterung zum Anpassen der Hostdatei in Docker

Inhaltsverzeichnis 1. Befehl 2. docker-compose.ym...