başarısız benim kodudur:node.js dosya yazma Burada rastgele
Data written
Data written
.
.
Error writing data Error: UNKNOWN, open 'output/mydata.json'
Error writing data Error: UNKNOWN, open 'output/mydata.json'
.
.
Data written
Error writing data Error: UNKNOWN, open 'output/mydata.json'
fonksiyonu (aCallbackInLoop) bir web hizmeti talebi için bir geri arama geçerli:
function aCallbackInLoop(dataArray) {
dataArray.forEach(function (item, index) {
fs.appendFile(fileName, JSON.stringify(item) + "\r\n", function (err) {
if (err) {
console.log('Error writing data ' + err);
} else {
console.log('Data written');
}
});
});
}
rastgele hatalar olsun , dataArray içindeki veri parçalarını döndürür. Bir döngüde birden çok web hizmeti isteği gerçekleştiriliyor, bu nedenle bu geri arama belki de paralel olarak çağrılıyor. Bazı dosya kilitleme sorunu olduğundan şüphe duyuyorum, ancak nasıl çözeceğimi bilmiyorum.
PS:
function writeDataToFile(fileName, data) {
try {
var wStream = fs.createWriteStream(fileName);
wStream.write(JSON.stringify(data) + "\r\n");
wStream.end();
} catch (err) {
console.log(err.message);
}
}
function aCallbackInLoop(dataArray){
dataArray.forEach(function(item, index){
writeDataToFile(filename, item); //filename is global var
});
}
gibi
finish
olayla bir işlev kayıt olabilirsiniz, ama yine de olsun umuyorum Çalışmanın async yolu. Değilse, bu cevabı çözüm olarak işaretleyeceğim. – SlowAndSteadyEşzamanlı bir sürüm kullanmak, bir node.js sunucusuna gitmenin doğru yolu değildir. – jfriend00
@ jfriend00 - Doğru, ama yine aynı dosyaya verilen bağlam bağlamında, senkronizasyon en iyi yaklaşımdır. OP'nin yeniden tasarlanması gerekebilir. – manojlds