在 promise 函数中等待

我如何在里面使用 await return new Promise((resolve, reject) => { ... }?


这是我的代码:


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 一样,但即使我在 (resolve, reject) 之前添加了`async,我仍然会收到语法错误...


摇曳的蔷薇
浏览 203回答 2
2回答

MM们

你没有!并且您也不会将异步函数作为回调传递给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事件后调用也没有多大意义。

忽然笑

我不知道您想要实现的功能,但如果您想要正确的语法,则如下所示: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)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript