javascript - Fetch API 总是返回一个 Promise
问题描述
我在调用 api 的地方有以下代码
const fetchToken = async () => {
const response = await axios.post("http://localhost:3000/api/getRedisData",
{
key: process.env.AUTH_TOKEN_NAME!,
});
console.log(response); // this returns what I expect it to return
return response;
};
然后我像这样调用函数。
fetchToken();
现在,这个功能工作得很好。但是当我尝试保存这个响应的数据时,如下所示。
token = fetchToken().then((r) => r);
它返回一个承诺,它永远不会解决。发生了什么,我该如何等到这个承诺解决。我只需要等待并获取数据。提前致谢。
我更新了这个问题。
假设我有以下对象。
const authMachine = createMachine<toggleAuth>({
id: "auth",
initial: "unauthenticated", // I want to chage this value based on token
context: {
//
},
states: {
//
},
});
现在我想根据我是否获得令牌来更新初始属性。现在我正在做这样的事情。
initial: token ? "authenticated" : "unauthenticated"
那么这里有什么问题呢?
解决方案
如果你在一个async
函数中,你可以只用await
它来获取数据。
const token = await fetchToken();
console.log(token);
// do other stuff with token
then
如果你不是,那么你需要在你的方法中使用令牌做所有你想做的事情。这是因为您正在调用一个async
方法并且没有能力调用await
它。执行将继续。该函数是您的方法成功完成then
时发生的回调。async
fetchToken().then(token => {
console.log(token)
// do other stuff with token
});
推荐阅读
- r - 检查 R 代码是否存在可能的问题...注意
- python - 遍历xpath?- 蟒蛇硒
- php - 使用 easy_admin / @Vich\Uploadable 上传图像时删除生成的哈希
- r - 如何获取 12 小时制中两个日期时间行之间的时间差
- pandas - 多级柱枢轴
- flutter - 动画时如何向容器添加半径 - Flutter
- javascript - 如何将引导导航栏放在英雄图像上
- binary - 使用extendscript读取二进制文件
- mongodb - MongoDB 使用聚合来格式化来自多个集合的数据
- python - conda env remove -n envname 不删除实际文件夹?