如何等到文件完成写入后再使用它?

Posted

技术标签:

【中文标题】如何等到文件完成写入后再使用它?【英文标题】:How to wait until a file finishes writing before using it? 【发布时间】:2020-11-22 07:44:38 【问题描述】:

我正在创建一个 png 文件,但是当我尝试使用它时,它会在完成编写之前尝试这样做

如何让它等到文件完成写入后再使用它?

                PImage.encodePNGToStream(img, fs.createWriteStream('template.out.png'));

            channel.send("Drawn By: "+req.body["Drawer"],  files: ["./template.out.png"] );

【问题讨论】:

【参考方案1】:

根据PImage-docs encodePNGToStream 是异步的并返回一个promise。所以你必须await 或使用then(...)

例如

await PImage.encodePNGToStream(img, fs.createWriteStream('template.out.png'));
channel.send("Drawn By: "+req.body["Drawer"],  files: ["./template.out.png"] );

PImage.encodePNGToStream(img, fs.createWriteStream('template.out.png')).then(_ => channel.send("Drawn By: "+req.body["Drawer"],  files: ["./template.out.png"] ));

【讨论】:

以上是关于如何等到文件完成写入后再使用它?的主要内容,如果未能解决你的问题,请参考以下文章

如何等到承诺完成后再继续循环

Mp3 播放类播放列表中的歌曲,但要等到一首完成后再继续

NodeJS - 等到流式传输多个文件完成后再继续编写代码

SwiftUI - 等到 Firestore getDocuments() 完成后再继续

等到一个程序完成后再在 Windows 脚本中开始下一个程序

如何等到方法开始和完成?