![](/img/trans.png)
[英]loging the response.json() inside the then() method before returning the 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.