我有一个文件asyncAwait.js
,它具有简单的功能:
async function doStuff() {
return(`Function returned string.`);
}
module.exports.doStuff = doStuff;
在另一个模块testing.js
中,我调用并按预期完成所有工作:
var functions = require(`./functions`);
(async () => {
const test = await functions.asyncAwait.doStuff();
console.log(test);
})();
这将记录“函数返回的字符串”。到控制台。
一切都很好。
但是,如果我在asyncAwait.js
中使用axios:
const axios = require(`axios`);
async function doStuff(parameter) {
const url = `https://jsonplaceholder.typicode.com/posts/1`;
const getData = async url => {
try {
const response = await axios.get(url);
const data = response.data;
console.log(data);
} catch (error) {
console.log(error);
}
};
return(getData(url));
}
module.exports.doStuff = doStuff;
然后在testing.js
中输入
var functions = require(`./functions`);
(async () => {
const test = await functions.asyncAwait.doStuff();
console.log(test);
})();
这将记录undefined
。
在第二个示例中,为什么函数调用返回未定义?
答案 0 :(得分:0)
在您的示例中,getData
没有回报。在这种情况下,您的函数将隐式返回undefined
。要修复它,您可以将该函数更改为以下内容:
const getData = async url => {
try {
const response = await axios.get(url);
return response.data;
} catch (error) {
return error
}
};
答案 1 :(得分:0)
module.exports.doStuff = doStuff;
我可以建议您:
module.exports=doStuff;
或
exports.doStuff
,也许但不确定您要达到的目标 替换
return(getData(url));
通过
return(()=>{return getData(url)});