【发布时间】:2023-01-08 01:37:41
【问题描述】:
我试图从 NextJS API 页面调用异步实用程序函数,但未定义。 当我转到 localhost:300/api/hello 时,控制台打印以下内容
result = undefined
文件一:api/hello.js
export default function handler(req, res) {
getCountries().then(result=>{
console.log('result = ', result);
res.status(200).json({ status: 'ok', data: result.data });
}).catch(err=>{
console.log('error = ', err);
res.status(500).json({ status: 'error', error: err });
})
}
文件 2:utils/getCountries.js
const getCountries = async () => {
var response = [];
var params = { action: "get_countries", ...authKey }
axios.get(APIFOOTBALL_URL, { params: params })
.then((result) => {
response = [...result.data];
return response;
}).catch((err) => {
throw err;
});
}
export default getCountries;
将 getCountries 函数更改为以下有效,但我不明白为什么。 async 不也返回一个 promise 吗? 如果一定要写在async/await方法中,应该怎么办?
文件 2:utils/getCountries.js
const getCountries = () => {
return new Promise((resolve, reject) =>{
var response = [];
var params = { action: "get_countries", ...authKey }
axios.get(APIFOOTBALL_URL, { params: params })
.then((result) => {
response = [...result.data];
resolve(response);
}).catch((err) => {
reject;
});
})
}
【问题讨论】:
-
你在第一个版本中没有返回任何东西。
undefined中函数的默认返回值。你需要像return axios.get(...这样的东西
标签: node.js next.js async-await es6-promise