@IvankoPo

Как правильно писать код под node js?

let obj;
fs.readFile("config.json", (err, data) => {
    if (err){
        console.log(err);
    } else {
        obj = JSON.Parse(data);
    }
});
console.log(obj);


Проблема в том что obj будет undefined, но мне нужно как то дальше работать с этой переменной, и не хочется писать огромную логику в ветке else коллбэка, как эта проблема решается ? Sync использовать нельзя.
  • Вопрос задан
  • 947 просмотров
Решения вопроса 3
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
new Promise((resolve, reject) => {
  fs.readFile("config.json", (err, data) => {
    if(err) {
      return reject(err);
    }
    resolve(JSON.Parse(data));
  });
}).then(obj => {
  console.log(obj);
  // your code
}).catch(console.error);
Ответ написан
@RidgeA
async/await, promise, callback
Ответ написан
Комментировать
@Interface
Чтобы не делать "огромную логику в ветке else коллбэка" можно использовать early-return https://forum.freecodecamp.org/t/the-return-early-...

Чтобы не делать большую вложенность и callback-hell нужно проделать путь: callback -> promise -> async/await

Ваш код станет примерно таким
async function foo() {
    try {
        const content = await fs.readFile("config.json", "utf-8");
        const obj = JSON.parse(content);
        console.log(obj);
    } catch(error) {
        console.error(error);
    };
}


При этом функция останется ассинхронной и не будет блокировать поток.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Конкретно тут проще воспользоваться синхронным чтением файла, а учитывая, что это вообще json, let obj = require('./config.json');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы