javascript - 为什么 response.json() 返回一个承诺?
问题描述
我有这个 JavaScript 获取函数
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]]
解决方案
response.json()
返回一个 Promise,因为此方法接受一个 Response流并将其读取到完成,这是一个异步过程。您可以在规范中找到有关它的更多信息
您需要的只是在读取流的过程结束时等待,为此您也可以await
使用
async getAllExpensesByUser() {
let reponse = await fetch("router.php/getAll");
let object = await response.json();
return object
}
...
const userExpenses = await getAllExpensesByUser()
console.log(userExpenses)
...
推荐阅读
- java - 通知不会出现在 Android 11 (sdk 30)
- java - 为什么你会使用 List 而不是 ArrayList?
- .net - 在同一端点中传递数据 FromBody 和 FromForm
- node.js - 运行`gulp`命令时出现`错误[ERR_REQUIRE_ESM]`
- c# - 通过服务引用发出 http 请求时,客户端身份验证方案“匿名”禁止 HTTP 请求
- mqtt - MQTT 5.0 消息传递重试和原因码
- node.js - 在nodejs中以html显示api响应
- c#-4.0 - 是否有从文本框转换为二进制的功能?
- c# - 性能:迭代 linq VS 迭代数据表
- excel - 输入一个进行比较后如何生成一个随机数?