const fs = require("fs")
const w = text => {
fs.appendFile("./log.txt", text + "\n", () => {})
}
w("A")
w("B")
w("C")
w("D")
w("E")
w("F")
w("G")
w("H")
w("I")
w("J")
順番がバラバラだった
D
A
C
E
F
H
B
I
G
J
非同期とは言え書き込み順は保証されてると思ったのにそんなことなかった
キューに入れて書き込み順は保証するようにした
const fs = require("fs")
const w = (() => {
const q = []
let running = false
const run = async () => {
running = true
let text
while(text = q.shift()) {
await fs.promises.appendFile("./log.txt", text + "\n")
}
running = false
}
return text => {
q.push(text)
if (!running) run()
}
})()
w("A")
w("B")
w("C")
w("D")
w("E")
w("F")
w("G")
w("H")
w("I")
w("J")