Получить значения вне функции запроса npm - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь создать функцию, которая анализирует JSON, когда ему передается URL. Он анализирует его, и если я пытаюсь войти в него внутри запроса, он работает, но я не могу вернуть это значение.

function JaySon(){
    request({url: url,json: true}, function (error, response, body) {
        return body;
    })
}

var url ="http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.9877644&lng=-1.47866&username=demo";
var x = JaySon(url);

console.log("json:"+x);

Консоль просто регистрирует «json: undefined», насколько я понимаю, это потому, что console.log запускается быстрее, чем завершается анализ. Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Другая возможная причина также может быть связана с тем, что ваша функция не принимает никаких аргументов, поэтому нет запроса к URL, который вы передали при вызове функции.

Ваш код должен быть что-то вроде

function JaySon(url){
request({url: url,json: true}, function (error, response, body) {
    return body;
})

}

0 голосов
/ 28 июня 2018

Это связано с тем, что вы ничего не возвращаете в своей функции:

async function JaySon(url) {
  return new Promise((resolve, reject) => {
    request({ url: url, json: true }, function(err, res, body) {
      if (err) reject(err);
      else resolve(body);
    });
  });
}

используйте это как:

Jayson('your_url').then(data => data)

или с async / await, но затем его нужно обернуть внутри асинхронной функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...