我可以在 deno 中异步多次写入文件吗?

Can I write multiple times to a file asynchronously in deno?

nodejs 文档对这个问题的描述如下:

It is unsafe to use fs.write() multiple times on the same file without waiting for the callback. For this scenario, fs.createWriteStream() is recommended.

现在,我在 deno 文档中找不到任何相关信息,我想知道 deno 是否也建议不要以较短的频率对同一文件进行多次 writes或者如果他们通过 Rust 以不同的方式处理它。 如果他们提出反对意见,建议的解决方法是什么?

谢谢!

不等待 promise 完成的异步 write 对于 deno 也是不安全的。

实际演示:

// If safe the file content would be ABCDEFGHIJ
async function main() {
  let n = new Uint8Array(1);
  const file = await Deno.open("bar.txt", { write: true, create: true });
  for (var i = 65; i < 75; i++) {
    n[0] = i;

    Deno.write(file.rid, n);
  }
}

main();

在我的 linux 盒子上 bar.txt 内容不是 ABCDEFGHIJ 而是“JJ”。

请注意,这个特定示例实际上显示了两个问题:

  • 在没有 await
  • 的情况下使用 Deno.write 无法安全访问文件资源
  • write() 调用之间共享相同的最后一个 i 循环变量值 J