2 回答
![?](http://img1.sycdn.imooc.com/545869470001a00302200220-100-100.jpg)
TA贡献1886条经验 获得超2个赞
你没有!并且您也不会将异步函数作为回调传递给write。到那时您已经阅读了该文件,因此您可以立即删除它,或者与其余文件同时删除。
async function write_file(file1, file2) {
const stream = fs_extra.createWriteStream(file2);
stream.end(await fs_extra.readFile(file1));
const unlinkP = fs_extra.unlink(file1);
unlinkP.catch(() => {});
// or just await fs_extra.unlink(file1);
await new Promise((resolve, reject) => {
stream.on('finish', resolve);
stream.on('error', reject);
});
await unlinkP;
}
stream.end()在收到其finish事件后调用也没有多大意义。
![?](http://img1.sycdn.imooc.com/54584dad0001dd7802200220-100-100.jpg)
TA贡献1806条经验 获得超5个赞
我不知道您想要实现的功能,但如果您想要正确的语法,则如下所示:
async function write_file(file1, file2) {
return new Promise(async (resolve, reject) => {
const stream = fs_extra.createWriteStream(file2)
stream.write(await fs_extra.readFile(file1), async () => await fs_extra.unlink(file1))
stream.on("finish", () => resolve())
stream.on("error", error => reject(error))
stream.end()
})
}
纠正语法的步骤
在倒数第二个大括号之后放置一个右括号。
在第 2 行添加async before (resolve, reject)。
添加回答
举报