@hackerskater

Как вывести переменную из функции, замена curl nodejs?

Вообщем сижу уже часа три никак не могу разобраться.
Вот переменная body
var options = {
     url: 'https://maps.googleapis.com/maps/api/timezone/json?location=' + latitude + ',' + longitude + '&timestamp=1331161200&key=' + googleApiKey,
     method: 'GET'
}
request(options, function (error, response, body) {
			        if (!error && response.statusCode == 200) {
                                console.log(body);
			   }
			    				
});

Все четко выводит обьект который парсится без труда
{
   "dstOffset" : 0,
   "rawOffset" : 14400,
   "status" : "OK",
   "timeZoneId" : "Europe/Moscow",
   "timeZoneName" : "Moscow Standard Time"
}

А теперь сама суть вне этой функция я не могу использовать обьект body, пробовал делать return body. Пробовал делать пустую переменную response вне функции а потом response = body, но все безуспешно. Как мне работать(парсить) с этим обьектом вне функции?Я прошу помогите junior кодеру. Голова уже взрывается.
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Dronbas
А зачем?
Запрос выполняется асинхронно, доступ к body есть только после получения ответа.
function handleBody(body){
     console.log(body);
     ...
}
request(options, function (error, response, body) {
              if (!error && response.statusCode == 200) {
                                handleBody(body);
         }
          				
});

Я не знаю задачи, возможно стоит подумать в сторону промисов.
function myRequest(options){
   return new Promise(function(resolve,reject){
       request(options, function (error, response, body) {
           if (!error && response.statusCode == 200) {
               return resolve(body)
           }
           //@todo handle errors
           reject()
       });
   });
}
myRequest(options).then(function(body){
   //тут теперь продолжается работа с body
}).catch(function(err){
   //code
})
Ответ написан
Комментировать
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
Event Driven Development.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы