Heim >Web-Frontend >js-Tutorial >Wie arbeiten asynchrone Funktionen und Versprechen in JavaScript zusammen?

Wie arbeiten asynchrone Funktionen und Versprechen in JavaScript zusammen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-22 20:15:17923Durchsuche

How Do Async Functions and Promises Work Together in JavaScript?

Asynchrone Funktionen und Versprechen

Bei der Arbeit mit asynchronen Vorgängen ist es wichtig zu verstehen, wie asynchrone Funktionen und Versprechen interagieren.

Asynchrone Funktionen geben immer Versprechen zurück

Anders als normal Bei asynchronen Funktionen geben asynchrone Funktionen immer ein Versprechen zurück, das den Abschluss ihrer asynchronen Vorgänge anzeigt. Dadurch wird die Handhabung asynchroner Vorgänge in sequentiellem Code einfacher.

Beispiel:

async function latestTime() {
  const bl = await web3.eth.getBlock('latest');
  return bl.timestamp;
}

Rückgabe primitiver Werte vs. Versprechen

Obwohl die Funktion einen primitiven Wert (bl.timestamp) zurückgibt, gibt die Funktion „latestTime()“ selbst ein Versprechen zurück. Dies kann zu Verwirrung führen, wenn Sie versuchen, auf den Rückgabewert zuzugreifen.

Versprechen verwenden

Um auf den aufgelösten Wert des zurückgegebenen Versprechens zuzugreifen, müssen Sie den Befehl then( verwenden ) Methode:

latestTime().then((time) => {
  console.log(time);
});

Alternativ können Sie in modernen JavaScript-Umgebungen die Top-Level-Methode verwenden Warten:

const time = await latestTime();
console.log(time);

Explizite Promise-Behandlung

Zur Verdeutlichung finden Sie hier eine explizitere Darstellung, wie sich die asynchrone Funktion in Bezug auf Promise-Rückrufe verhält:

function latestTime() {
    return new Promise((resolve, reject) => {
        web3.eth.getBlock('latest').then((bl) => {
            resolve(bl.timestamp);
        })
    });
}

Das obige ist der detaillierte Inhalt vonWie arbeiten asynchrone Funktionen und Versprechen in JavaScript zusammen?. 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