【发布时间】:2022-01-20 15:36:37
【问题描述】:
所以我有这样的代码
const getAllProduct = async () => {
let allProduct = "";
let config = {
method: "get",
url: db_base_url + "/products/",
headers: {
Authorization: "Bearer " + token.access.token,
"Content-Type": "application/json",
},
};
try {
let response = await axios(config);
allProduct = response.data.results;
} catch (error) {
console.log(error);
}
console.log(allProduct);
return allProduct;
};
console.log(allProduct) 会打印一个数组。
该函数会被react by的render方法调用
return (<div> {getAllProduct()} </div>)
我已经尝试过
return (<div> {console.log(getAllProduct())} </div>
但是console.log在渲染时返回的是Promise Object而不是results数组。
我该如何解决这个问题?
【问题讨论】:
-
您无法解决这个问题 - 但您不需要这样做。它返回一个承诺,因为您不知道函数何时会完成,因为它是异步发生的,一旦处于“异步模式”,您就无法将您的值恢复到“同步模式”。您需要等待返回的 Promise 或在其上使用
.then()。 -
您需要等待它,和/或全局设置值。在上面某处定义一个变量并将其设置为返回,但这是异步的,等待它。 :)
标签: javascript reactjs