为了账号安全,请及时绑定邮箱和手机立即绑定

在 promise 函数中等待

在 promise 函数中等待

摇曳的蔷薇 2021-11-18 17:01:35
我如何在里面使用 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,我仍然会收到语法错误...
查看完整描述

2 回答

?
MM们

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事件后调用也没有多大意义。


查看完整回答
反对 回复 2021-11-18
?
忽然笑

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)。


查看完整回答
反对 回复 2021-11-18
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信