javascript - Javascript/API - 调用异步函数导出 axios 请求的最佳方式
问题描述
这里的想法是调用一个 API 来获取组织中的运动价格。
我正在寻找一种像这样调用它的方法,但 const CHOOSE_SPORT 似乎不是异步的。这是一种更恰当地称呼它的方法吗?
export const url = '/api/sport/'
export const requestApi = async (sport) => {
return await axios.get(url + sport).then(function(req) {
console.log(req.data);
return req.data;
})
};
const CHOOSE_SPORT = freeze({
[SPORT.NOW]: await requestApi('football'),
[SPORT.TOMORROW]: await requestApi('basketball') ,
});
export const prize = (SPORT) => {
return CHOOSE_SPORT[SPORT] ;
}
解决方案
我不确定这是否是你想要做的,但 requestApi 是一个异步函数,因此它会返回一个承诺。您不能在异步函数之外等待,您必须将其包装或使用。
export const url = '/api/sport/'
export const requestApi = async (sport) => {
return await axios.get(url + sport).then(function (req) {
console.log(req.data);
return req.data;
})
};
async function generateSportLib(SPORT) {
const now = await requestApi('football');
const tomorrow = await requestApi('basketball');
const CHOOSE_SPORT = freeze({
[SPORT.NOW]: now,
[SPORT.TOMORROW]: tomorrow,
});
return CHOOSE_SPORT;
}
export const prize = async (SPORT) => {
const CHOOSE_SPORT = await generateSportLib(SPORT);
return CHOOSE_SPORT; //
}
推荐阅读
- parsing - antlr 或其他工具可以为给定的语法生成有效代码吗?
- python - tkinter 在 python 3.6 上表现怪异
- angular - Angular / Facebook:应该明确提供“og:image”属性,即使可以从其他标签推断出一个值
- django - Django ModelMultipleChoiceField 不保存
- java - 当活动开始使用 Linearlayoutmanager 时,将 Recycleview 滚动到顶部位置
- c# - 参数“地址”不能为空字符串
- ruby-on-rails - 在使用简单形式的 Rails 视图中是否有任何方法可以限制在日期选择器中选择未来日期?
- python - 如何使用while循环在selenium中重复任务
- typescript - 如何使用 tf.loadModel 从 Firebase 存储加载模型?
- php - 如何使用表单复制文件夹及其内容