【发布时间】:2021-06-06 11:29:35
【问题描述】:
我已经阅读了有关承诺的所有内容,我从多个线程测试了多个解决方案,但我仍然无法让它工作
我正在尝试遍历文件夹中的文件,获取 xml 内容,使用 xml-js 模块将其转换为 js 对象,然后将它们添加到数组中。 这是我最后一次尝试(大约 30 次中的一次)
fs.readdir(folderPath, async(err, files) => {
let xmlArray = await Promise.all(
files.map((file) => {
fs.readFile(filePath, 'utf8', async(err, data) => {
return await xmljs.xml2js(data , {compact : true).RequestFileHatasDM;
})
})
)
console.log(xmlArray);
})
我错过了什么? 我认为 readdir 被调用,然后回调返回,这就是我等待 Promise.all 的地方,然后使用 .map 迭代所有内容并返回值,该值应该(?)返回并承诺解决。
然后在一切都解决之后,它才应该继续到console.log(),但由于某种原因,当我运行服务器时它立即跳转到console.log(),好像所有的promise都已经解决了!
将 console.log() 放入 readFile 方法时,它仍在运行。
我很困惑,谁能指出我的错误?
【问题讨论】:
标签: node.js dictionary asynchronous promise