В настоящее время я читаю и записываю файлы асинхронно, дело в том, что я не уверен, что вся строка из файла была прочитана до того, как остальная часть моего кода будет выполнена, здесь мой код:Чтение и запись файлов async в node.js
var fs = require('fs');
//var str = fs.readFileSync("stockststs.json");
function updateJson(ticker) {
//var stocksJson = JSON.parse(fs.readFileSync("stocktest.json"));
fs.readFile('stocktest.json', function(error, file) {
stocksJson = JSON.parse(file);
if (stocksJson[ticker]!=null) {
console.log(ticker+" price : " + stocksJson[ticker].price);
console.log("changin the value...")
stocksJson[ticker].price = 989898;
console.log("Price after the change has been made -- " + stocksJson[ticker].price);
fs.writeFile('stocktest.json',JSON.stringify(stocksJson, null, 4) , function(err) {
if(!err) {
console.log("File successfully written");
}
});
}
else {
console.log(ticker + " doesn't exist on the json");
}
});
}
updateJson("APPL");
Мне интересно, есть ли лучший способ реализовать?
Давайте предположим, что я хочу, чтобы запустить мою функцию несколько раз, это означает, что он будет читать файл, писать в него, то это будет происходить снова, поэтому я пробовал это и во 2-м звоните, не записывая в файл. любая идея почему? – user3502786
Да, потому что эта функция проверяет, существует ли файл в первую очередь. Если вы хотите сохранить переписывание, просто удалите эту проверку – AhmadAssaf
, вы говорите о моей функции? Если да, какую строку я должен удалить? – user3502786