【问题标题】: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。