Hallo Rolf,
die anderen Antworten haben sich auf externe race-conditions bezogen, also Konkurrenz mit anderen Instanzen deines Programms. Ich habe noch eine andere.
ok.
D.h. der writeJson Aufruf läuft, während noch auf den Empfang von readJson gewartet wird.
Stimmt.
Eine Variable
data
gibt es jetzt gar nicht. Falls Du sie global definiert hättest, wäre sie jetzt noch undefined. Und das ist ein race, den Du nur verlieren kannst. Du solltest ggf. mit dem Promise arbeiten, das von readJson zurückgegeben wird, dann kann man das schön verketten:const nlFile2 = './data/file.json'; fs.readJson(nlFile2) .then(data => { data.push({ email: req.body.mail, name: req.body.Name }); return fs.writeJson('./data/file.json', data); }) .then(() => { console.log('success!') }) .catch(err => { console.error(err) });
Stehen diese .then-Handler für Promisses?
Wenn ein .then Handler ein Promise zurückgibt, wartet ein nachgelagerter .then Handler auf die Erfüllung dieses Promise.
Woher weiß man sowas?
Pit