我试图从JSON列表(response.data)中获取所有id并将其返回给main函数。但是我如何从另一个具有async方法的函数中获取信息呢?
我不太明白...
下面是我代码:
var axios = require('axios');
async function get_info() {
let config = {
method: 'get',
url: 'https://.../api/records',
headers: {
'x-api-key': '...'
},
params: {
}
};
await axios(config)
.then(function (response) {
var data = JSON.stringify(response.data);
var data_array = data.split(',');
var count = 0;
const list_id = [];
for (i = 0; i < data_array.length; i++) {
if (data_array[i].includes('"id":')) {
list_id[count] = data_array[i];
count++;
}
}
console.log("list_id.length on function = " + list_id.length);
return list_id;
})
.catch(function (error) {
console.log(error);
});
}
async function main() {
console.log("Hi!");
list_id = await get_info();
console.log("list_id.length on main = " + list_id.length);
}
main();
我得到了这个:
PS C:\Users\Enzo\Documents\dev\passerelle>node .\script.js
Hi!
list_id.length on function = 200
C:\Users\Enzo\Documents\dev\passerelle\script.js:84
console.log("list_id.length = " + list_id.length);
^
TypeError: Cannot read properties of undefined (reading 'length')
at main (C:\Users\Enzo\Documents\dev\passerelle\script.js:84:47)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Node.js v18.12.1
我不明白为什么它是“不确定的”,当我做一个等待之前。
1条答案
按热度按时间bmp9r5qi1#
使用
async
/await
时,不要使用.then()
。如果没有回调,return
语句实际上将从get_info
返回,而不是从.then()
回调返回。