簡體   English   中英

為什么 response.json() 返回 promise?

[英]Why is response.json() returning a promise?

我有這個 JavaScript 獲取 function

async getAllExpensesByUser() {
    let reponse = await fetch("router.php/getAll");
    console.log(reponse.json());
  }

也試過

getAllExpensesByUser = async () => {
    const response = await fetch("router.php/getAll");
    if (response.ok) {
      const jsonValue = await response.json();
      return Promise.resolve(jsonValue);
    } else {
      return Promise.reject("*** PHP file not found");
    }
  };

我的 router.php 文件有這個代碼

   $data = $expensesController->getExpensesForUser($_SESSION['userid']);
   echo json_encode($data);

但是response.json()正在返回Promise {<pending>}並且我需要的結果在[[PromiseResult]]

正如 Yousaf 所指出的, fetch 和 Body.json() 都返回承諾。 要在繼續之前等待 fetch 和 Body.json 調用解決,您只需像這樣更新您的代碼:

async getAllExpensesByUser() {
  let reponse = await fetch("router.php/getAll");
  let object = await response.json();
  console.log(object);
  return object;//If needed, see the comment by Emiel
}

response.json()返回一個 Promise 因為這個方法接受一個響應stream並讀取它完成,這是一個異步過程。 您可以在規范中找到有關它的更多信息

您需要的只是等待讀取 stream 的過程結束,為此您也可以使用await

async getAllExpensesByUser() {
  let reponse = await fetch("router.php/getAll");
  let object = await response.json();
  return object
}

...

const userExpenses = await getAllExpensesByUser()
console.log(userExpenses) 

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM