如何在return new Promise((resolve, reject) => { ... }
中使用await?
这是我的代码:
async function write_file(file1, file2){
return new Promise((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();
}
}
我得到语法错误,就像我在非异步函数中使用await一样,但是即使我在`async之前添加(解析,拒绝),我仍然会收到语法错误...
你不!而且,您也不会将异步函数作为回调传递给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); // 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
也没有多大意义。