Javascript 为什么response.json()返回承诺?
我有这个JavaScript获取函数Javascript 为什么response.json()返回承诺?,javascript,php,json,Javascript,Php,Json,我有这个JavaScript获取函数 async getAllExpensesByUser() { let reponse = await fetch("router.php/getAll"); console.log(reponse.json()); } 也试过 getAllExpensesByUser = async () => { const response = await fetch("router.php/getAll
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{}
,我需要的结果是[[PromiseResult]]
,正如Yousaf指出的,fetch和Body.json()都返回promises。要在继续之前等待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
}
正如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()。您可以在
您需要的只是在读取流的过程结束时等待,为此,您也可以使用wait
async getAllExpensesByUser() {
let reponse = await fetch("router.php/getAll");
let object = await response.json();
return object
}
...
const userExpenses = await getAllExpensesByUser()
console.log(userExpenses)
...
response.json()。您可以在
您需要的只是在读取流的过程结束时等待,为此,您也可以使用wait
async getAllExpensesByUser() {
let reponse = await fetch("router.php/getAll");
let object = await response.json();
return object
}
...
const userExpenses = await getAllExpensesByUser()
console.log(userExpenses)
...
它返回一个承诺,因为它是这样定义的:另请注意,您不需要用promise.resolve
包装jsonValue
:一个async
函数返回一个承诺-从异步函数返回的任何非承诺值都隐式包装在一个承诺中。在MDN示例中,数据在fetch内呈现它本身如果我想返回数据并在其他地方使用它怎么办?我尝试过这样做,但是当我在我想要使用它的地方使用console.log(data)
时,它又变成了一个承诺。在您尝试实现getAllExpensesByUser
函数的地方添加代码。getAllExpensesByUser
函数是异步的,这意味着它返回一个承诺。要获得实现该承诺的价值,您可以选择chainthen()
method或wait
调用getAllExpensesByser
函数它返回一个承诺,因为它被定义为这样做:另请注意,您不需要使用promise.resolve来包装jsonValue
:一个异步
函数返回一个承诺-从异步函数返回的任何非承诺值隐式包装在承诺中。在MDN示例中,数据在fetch自身内部呈现。如果我想返回数据并在其他地方使用它怎么办?我尝试过这样做,但是当我在我想要使用它的地方使用console.log(data)
时,它又变成了一个承诺。在您尝试实现getAllExpensesByUser
函数的地方添加代码。getAllExpensesByUser
函数是异步的,这意味着它返回一个承诺。要获得实现该承诺的值,可以链接then()
方法或wait
调用getAllExpensesByUser
函数这很有用。非常感谢。别忘了返回对象
@EmielZuurbier,谢谢你指出这一点。这很有用。非常感谢。别忘了返回对象
@EmielZuurbier,谢谢你指出这一点。