【问题标题】:Can I write multiple times to a file asynchronously in deno?我可以在 deno 中异步多次写入文件吗?
【发布时间】:2020-04-04 00:53:02
【问题描述】:

nodejs 文档对这个问题做了如下说明:

在同一个文件上多次使用 fs.write() 而不等待回调是不安全的。对于这种情况,建议使用 fs.createWriteStream()。

现在,我在 deno 文档中找不到任何关于它的信息,我想知道 deno 是否还建议不要在同一文件上以短频率进行多次 写入,或者他们是否已经处理它通过 Rust 有所不同。 如果他们提出反对意见,推荐的解决方法是什么?

谢谢!

【问题讨论】:

    标签: javascript asynchronous deno


    【解决方案1】:

    不等待 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'。

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多