Asynchrone Funktionen ermöglichen eine nicht blockierende Verarbeitung, indem sie Aufgaben gleichzeitig ausführen und Versprechen zurückgeben, die das Ergebnis des Vorgangs darstellen. Wenn asynchrone Funktionen jedoch ohne ordnungsgemäße Handhabung ausgeführt werden, kann dies zu einem Promise {
Im bereitgestellten Code-Snippet gibt die AuthUser-Funktion ein Versprechen zurück, das das Ergebnis der google.login-Funktion darstellt. Der nachfolgende Aufruf von AuthUser in userToken = AuthUser(data) führt jedoch zu einem ungelösten Versprechen, da kein Rückruf verwendet wird, um seine Auflösung zu verarbeiten.
Um das Ergebnis des Versprechens zu erfassen, Dem Versprechen muss eine .then- oder .catch-Methode beigefügt werden. Mit diesen Methoden können Sie die Auflösung bzw. Ablehnung des Versprechens handhaben.
Die folgende Änderung erfasst den Wert des userToken-Versprechens in einem Rückruf:
let userToken = AuthUser(data); userToken.then(function(result) { console.log(result); // "Some User token" });
Versprechen sind von Natur aus vorwärtsgerichtet. Nach der Auflösung wird das Ergebnis unabhängig vom aktuellen Status des Versprechens an die Handler .then oder .catch übergeben. Der folgende .then-Handler erhält immer den aufgelösten Wert des verketteten Versprechens, das im vorhergehenden .then zurückgegeben wurde.
Wertrendite:
initPromise() .then(function(result) { console.log(result); // "initResolve" return "normalReturn"; }) .then(function(result) { console.log(result); // "normalReturn" });
Versprechensverkettung:
initPromise() .then(function(result) { console.log(result); // "initResolve" return new Promise(function(resolve, reject) { setTimeout(function() { resolve("secondPromise"); }, 1000) }) }) .then(function(result) { console.log(result); // "secondPromise" });
Durch die Einhaltung dieser Grundsätze Sie können asynchrone Vorgänge effektiv verarbeiten und deren aufgelöste Werte erfassen.
Das obige ist der detaillierte Inhalt vonWie kann ich Versprechensauflösungen in asynchronem JavaScript effektiv verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!