У меня есть последовательность событий, которая go примерно такая:
//Download a file and write it to disk
await downloadSyncFile(user, downloadURL)
//Use the file...
await useTheFile() //Crash! The file is only partially there! Dangit!
Мой код продолжает двигаться до того, как файл фактически окажется на диске. Вот моя функция загрузки:
async function downloadSyncFile(user, downloadURL){
//Setup download path
let path = './data/'+user+'/file.whatevs'
try{
//Download and save file
let stream = fs.createWriteStream(path)
let response = await axios.get(downloadURL, { responseType: 'stream' })
response.data.pipe(stream)
await new Promise(fulfill => stream.on('finish', fulfill))
}catch(error){
console.log('downloadSyncFile Error: '+error)
return { success: false, message: error }
}
}
Функция downloadSyncFile()
, кажется, возвращается после завершения загрузки axios
, но запись на диск не завершена.
Как я могу убедитесь, что файл безопасно записан на диск до того, как downloadSyncFile()
вернет?