Возвратите объект JSON из URL в Node.js / JavaScript [дубликаты]

1

Я пытаюсь создать функцию, которая возвращает объект JSON из URL-адреса. Он должен работать следующим образом:

function getObject(url) {
  // return undefined when the url or json is invalid
  return object;
}

Чтобы я мог использовать его таким образом, если бы я использовал следующий URL-адрес:

var object = getObject('http://ip.jsontest.com/');
console.log('My IP is: ' + object.ip)

JSON из примера выглядит следующим образом:

{"ip": "127.0.0.1"}

Поэтому приведенный выше код должен зарегистрировать это:

Мой IP-адрес: 127.0.0.1

Я уже пробовал его с модулем запроса и нашел этот пример в StackOverflow:

request.get({ 
  url: 'http://ip.jsontest.com/', 
  json: true, 
  headers: {'User-Agent': 'request'} }, (err, res, data) => {
  if (err) {
    console.log('Error:', err)
  } else if (res.statusCode !== 200) {
    console.log('Status:', res.statusCode)
  } else {
    // data is already parsed as JSON:
    console.log(data)
  }
})

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

  • 0
    Node.js работает асинхронно. Вы можете использовать Promises или Async / Await.
  • 0
    Вы не должны хотеть синхронного решения. В этом нет необходимости, если вы используете шаблоны асинхронного программирования, такие как обещания.
Теги:
object
url

1 ответ

-1

Нет никакого способа сделать это синхронно. Вы можете изучить использование api apetch и функцию async, если они поддерживаются в вашей среде.

Например:

async function getMyIpAndDoSomething() {
  const response = await fetch("http://ip.jsontest.com/");
  const object = await response.json();

  console.log(object.ip);
}
  • 0
    можно сделать это синхронно с помощью обещаний, подождите, пока не получите ответ
  • 0
    Вот как все асинхронные значения работают. Вы ждете ответа. Вы не можете получить синхронно, хотя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню