#javascript #json #typescript #loops
#javascript #json #typescript #циклы
Вопрос:
Итак, я написал скрипт для сохранения данных из моего проекта в файлы JSON, но мне сказали, что это неуклюже. По сути, я просто написал три почти идентичных метода записи файлов как таковых:
var fs = require('fs');
fs.writeFile('public/game-data.json', JSON.stringify(getGameData()), (e: any) => {
if(e){
console.error(e);
return;
};
console.log("Saved game data to game-data.json.");
});
fs.writeFile('public/shop-items.json', JSON.stringify(getShopData()), (e: any) => {
if(e){
console.error(e);
return;
};
console.log("Saved shop data to shop-data.json.");
});
fs.writeFile('public/hash.json', JSON.stringify(getHashData()), (e: any) => {
if(e){
console.error(e);
return;
};
console.log("Saved hash data to hash.json.");
});
Мне рекомендовали использовать цикл и «надежную функцию» (нигде не могу найти определение этого)… У кого-нибудь есть какие-либо рекомендации?
Комментарии:
1. Вы должны вернуться к человеку, который вам это сказал, и спросить его.
2. Создайте функцию, которая принимает
data
иfileName
, затем реорганизует все три функции, чтобы они вызывались какmyWritFile(getGameData(), 'game-data.json')
?3. Представьте, что вы пишете функцию,
writeData
, которую вы вызываете следующим образом:writeData('game', 'game-data.json', getGameData())
, затемwriteData('shop', 'shop-items.json', getShopData())
, и снова для хэша. Как бы вы это написали?4. Я бы не сказал, что неуклюжий. Он повторяющийся, но не неуклюжий. Я искал надежную функцию, так как я всегда хочу узнать что-то новое, и я тоже не могу найти никакого объяснения.
Ответ №1:
Единственное, о чем я могу думать, это:
var fs = require('fs');
function saveJSON(file, data, type) {
fs.writeFile(file, JSON.stringify(data), (e: any) => {
if (e) {
console.error(e);
return;
};
console.log("Saved " type " data to " file);
});
}
saveJSON('public/game-data.json', getGameData(), 'game');
Комментарии:
1. Я бы предложил еще один параметр для вывода журнала, который может быть передан
"game"
,"shop"
, или"hash"
2. Это потрясающее решение, спасибо!! Я новичок в программировании и все еще привыкаю к логике.
Ответ №2:
Немного другой подход (не тестировался, и я не знаю Typescript, так что это может быть немного хитроумно):
var fs = require('fs');
const console_callback = (message: string) => (e: any) =>
e ? console.error(e) : console.log(message);
fs.writeFile(
'public/game-data.json',
JSON.stringify(getGameData()),
console_callback("Saved game data to game-data.json.")
);