我对异步和等待的一种行为感到困惑。我有一个promise.all
,其中的地图调用了另一个异步函数。在该异步函数中,我有一个写有回调的fs.writeFile()
功能文件。一旦所有的诺言都兑现了,我想做些事情。但是, fs.writefile()
回调总是迟到。即首先打印在promise.all
之后编写的控制台,然后再打印zip完成控制台。
下面是代码:
ingite = async () => {
let users = await storage.getData('users');
let result = await Promise.all(
users.map( async user =>{
await datagenerator.fetchAllData(user.user);
})
);
if(result) {
console.log("All Done -->");
}
}
被调用的功能
fetchAllData = async (username) => {
await fs.writeFile(`${global.appRoot}/user_data/${username}/test.html`,template,function(err) {
if (err) {
console.log(err);
} else {
zipFolder(`${global.appRoot}/user_data/${username}`,`${global.appRoot}/user_zip/${username}-info.zip`,function(err) {
if(err) {
} else {
const file = `${global.appRoot}/user_zip/info.zip`;
console.log('ZIP generated successfully for -->',username);
}
});
}
});
在这里,某些用户在代码'ZIP generated successfully for -->'
中是
console.log("All Done -->");
有人可以建议我出什么事吗?