如何在文件系统模块中使用 async/await

时间:2020-12-22 19:17:24

标签: javascript node.js

我将如何使用带有fs.unlink() 的 async/await 语法来删除具有给定路径的文件。

3 个答案:

答案 0 :(得分:3)

当您使用文件系统函数时,请将其用作基于 Promise 的而不是基于回调的。您可以说 fs.promises.unlink() 而不是说 fs.unlink(),但请记住,这个 Promise 内置函数是在 Node.js 版本 10 中添加的。因此,如果您使用的是旧版本,则不会这样工作! 要在您的代码中使用它,您可以这样做:

await fs.promises.unlink(yourPath)

答案 1 :(得分:0)

你不需要等待。

fs.unlink(path, callback)

您创建一个回调

假设“path/file.txt”是一个普通文件。

fs.unlink('path/file.txt', (err) => {
  if (err) throw err;
  console.log('path/file.txt was deleted');
});

异步的是 fs.unlink().

同步的是 fs.unlinkSync().

https://nodejs.org/api/fs.html#fs_fs_unlink_path_callback

答案 2 :(得分:0)

你可以“承诺”所有回调风格的函数!

// promisefy this:
fs.unlink('path/file.txt', (err) => {
  if (err) throw err;
  console.log('path/file.txt was deleted');
});


// to this:
const unlinkPromise = (path) => new Promise((resolve, reject) => {
    fs.unlink('path/file.txt', (err) => {
    if (err) reject(err);
    resolve(path);
  });
  
});

// and then call with await or chain promises
await unlinkPromise('path/file.txt').then((path) => {
    console.log(`${path} was deleted`);
});

但如前所述,同步方法不需要等待,这种策略,我会推荐用于承诺级联...