【发布时间】:2020-05-26 23:54:38
【问题描述】:
我有一个文件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。
为什么第二个例子中的函数调用返回 undefined?
【问题讨论】:
-
你的
getData()函数没有return任何东西。 -
getData没有返回任何内容 -
console.log(data);将记录数据,但console.log(test);将记录undefined,因为getData(url)是undefined
标签: javascript node.js async-await axios