非同步函數傳回Promise {
。但是,當嘗試立即存取其值時,由於 Promise 的未解析狀態,控制台會記錄「Promise {
正在解析 Promise 值
要取得所需的令牌值,您必須將「.then」處理程序連結到您的 Promise。此處理程序可擷取已解決的結果,無論它已經可用還是仍有待處理:
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 解析詳細資訊
Promises 遵守 Promises/A規範,該規範強制要求具體的解析過程:
了解 Promise 鏈
每個「.then」處理程序的解析值成為下一個處理程序的輸入,啟用一系列非同步操作。以下範例說明了此行為:
值回傳:
function initPromise() { return new Promise((res, rej) => { res("initResolve"); }); } initPromise() .then((result) => { console.log(result); // "initResolve" return "normalReturn"; }) .then((result) => { console.log(result); // "normalReturn" });
鍊式 Promise 回傳:
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" });
以上是為什麼我的非同步函數回傳 `Promise { }` 而不是值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!