【发布时间】:2021-12-16 05:24:35
【问题描述】:
createFolder() 函数返回一个空数组。我不确定我做错了什么,但它需要返回project_array内的项目@
function get_project_folders(){
return new Promise((resolve, reject)=>{
fs.readdir(__dirname + '/projects', (error, data1)=>{
if(error){
reject(console.log(`Error. Unable to read directory - ${error}`))
}else{
resolve(data1)
}
})
})
}
async function createFolder(){
let list_of_projects = await get_project_folders()
let project_array = []
return new Promise((resolve, reject)=>{
for(let project of list_of_projects){
let splitProject = project.split("-")
fs.readdir(__dirname + `/projects/${splitProject[0]}-${splitProject[1]}`, (error, data1)=>{
if(error){
console.log('Error. Unable to read directory.')
}else{
project_array.push({circuit: splitProject[0], fuse: splitProject[1], pole: data1})
}
})
}
resolve(project_array)
})
}
async function testIt(){
let folderData = await createFolder()
console.log(folderData)
}
testIt()
【问题讨论】:
-
你看到
get_project_folders返回什么了吗? -
是的,它会根据需要返回文件夹名称。创建文件夹函数是唯一不返回我需要的数据的函数
-
这是一个异步问题 - 您的最后一次解决发生在您的 fs 调用解决之前。你应该做类似
await Promise.all( list_of_projects.map(...) )的事情,然后解决你的包装承诺。
标签: javascript node.js asynchronous async-await promise