Heim >Web-Frontend >js-Tutorial >Warum gibt meine asynchrone Funktion „Promise { }' anstelle eines Werts zurück?
Asynchrone Funktion, die Versprechen zurückgibt {
Wie im bereitgestellten Code gezeigt, geben asynchrone Funktionen häufig ein Promise zurück, das den letztendlich verfügbaren Wert darstellt. Wenn jedoch versucht wird, sofort auf seinen Wert zuzugreifen, protokolliert die Konsole „Promise {
Promise-Werte werden aufgelöst
Um den gewünschten Tokenwert zu erhalten, müssen Sie einen „.then“-Handler mit Ihrem Versprechen verketten. Dieser Handler erfasst das gelöste Ergebnis, unabhängig davon, ob es bereits verfügbar ist oder noch aussteht:
let AuthUser = (data) => { return google.login(data.username, data.password).then((token) => { return token; }); }; let userToken = AuthUser(data); userToken.then((result) => { console.log(result); // "Some User Token" });
Promise Resolution Details
Promises entsprechen der Promises/A-Spezifikation, die vorschreibt ein bestimmtes Auflösungsverfahren:
Verstehen der Promise-Verkettung
Der aufgelöste Wert jedes „.then“-Handlers wird zur Eingabe des nächsten Handlers und ermöglicht so eine Kette asynchroner Vorgänge. Die folgenden Beispiele veranschaulichen dieses Verhalten:
Value Return:
function initPromise() { return new Promise((res, rej) => { res("initResolve"); }); } initPromise() .then((result) => { console.log(result); // "initResolve" return "normalReturn"; }) .then((result) => { console.log(result); // "normalReturn" });
Chained Promise Return:
function initPromise() { return new Promise((res, rej) => { res("initResolve"); }); } initPromise() .then((result) => { console.log(result); // "initResolve" return new Promise((resolve, reject) => { setTimeout(() => { resolve("secondPromise"); }, 1000); }); }) .then((result) => { console.log(result); // "secondPromise" });
Das obige ist der detaillierte Inhalt vonWarum gibt meine asynchrone Funktion „Promise { }' anstelle eines Werts zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!