Как исправить переменную не определено` - рассматриваемая переменная четко определена в моем коде - PullRequest
0 голосов
/ 01 мая 2019

Привет, удивительные люди из Интернета, здесь довольно нубистский вопрос, но у меня возникла небольшая проблема с некоторыми из этих Javascript, которые я написал.Вот код -

const req0 = http.request({
      hostname: `api.trello.com`,
      port: 443,
      path: `/1/lists/5cb77e9ef180dd2bbb25acf2/cards?key=${trelloKey}&token=${trelloToken}&fields=name`,
      method: `GET`
    }, res => {
      let str = '';
      res.on('data', chunk => {
        str += chunk;
      });
      res.on('end', () => {
        try {
            var level0Data = JSON.parse(str);
            console.log(`Level 0: ${level0Data}`)
            level0Data.forEach((k,v) => {
                var id = k.id;
                var name = k.name;
                console.log(`${id} = ${name}`);
            });
        } catch(error) {
            console.log(error);
        }
      });
    });
    req0.on('error', error => {
      console.log(error);
    });
    req0.end();


  level0Data.forEach(function(level0Names) {
    // code here
  });

Проблема, с которой я сталкиваюсь, заключается в том, что она постоянно выдает мне сообщение о том, что level0Data is not defined.Я знаю, что это довольно новенький вопрос, но я был бы признателен за некоторые рекомендации.Спасибо!

1 Ответ

1 голос
/ 01 мая 2019

Видите ли вы, что level0Data не определено в области ниже? (ссылка на MDN (область))

  level0Data.forEach(function(level0Names) {
    // code here
  });

Вы должны использовать level0data внутри функции обратного вызова.


// NOTE: Level0data is available only here, as you defined in this scope.
...

            var level0Data = JSON.parse(str);
            console.log(`Level 0: ${level0Data}`)
            level0Data.forEach((k,v) => {
                var id = k.id;
                var name = k.name;
                console.log(`${id} = ${name}`);
            });

...

Или вы можете передать функцию для обработки обратного вызова.

function handle(str) {
            var level0Data = JSON.parse(str);
            console.log(`Level 0: ${level0Data}`)
            level0Data.forEach((k,v) => {
                var id = k.id;
                var name = k.name;
                console.log(`${id} = ${name}`);
            });

  level0Data.forEach(function(level0Names) {
    // code here
  });
}

...

try {
  handle(str)
} catch(e) {
  console.error(e)
}
...