我试图通过axios调用从node js中的一个promise函数返回一个数组。axios调用工作正常,console.log向我显示了我在返回的promise的数据对象中查找的数组。但是当我使用console.log查看函数外部的函数结果时,它显示“undefined”。
async function userImport (settings, file) {
let usersFile;
const auth = {
"username": settings.authentication.user,
"password": settings.authentication.password
};
const options = {
method: 'get',
headers: {
},
timeout: 10000
};
await axios.get(settings.url,auth,options)
.then((results) => {
usersFile = results.data;
console.log(usersFile);
if (usersFile && usersFile != "" && usersFile != undefined) {
console.log("Test1");
return [usersFile,settings.encoding];
} else {
console.log("Test2");
return results;
}
})
}
await userImport(settings, file)
.then(async (users)=>{
console.log(users);
})
字符串
我得到的结果是:
[{...},{...},{...}] //The array I'm looking for
Test1
Undefined
型
我期望得到的是:
[{...},{...},{...}] //The array I'm looking for
Test1
[{...},{...},{...}] //The array I'm looking for
型
我试着把数组放入一个json对象中,如下所示:
let usersFile = {};
usersFile.users = results.data;
型
然后我得到:
{users:[{...},{...},{...}]} //The array I'm looking for
Test1
Undefined
型
我还尝试直接返回results.data,而不将其放在元素中,但结果是一样的。
1条答案
按热度按时间gpnt7bae1#
如果有人有这个问题,我终于弄明白了。问题是使用
字符串
因为我正在调用另一个函数,所以“return”是为它而不是外部函数发送的,所以外部函数在没有“return”的情况下完成。
这个问题有两个解决办法:
1.(我选择的那个)改变结构不使用.然后按以下方式:
usersFile = await axios.get(settings.url,auth,options); usersFile = usersFile.data;
1.使用内部函数的结果添加另一个返回值。