2015-10-20 3 views
-1

В настоящее время я пытаюсь узнать, как выполнять HTTP-запросы в Meteor. Когда я запускаю код, я могу правильно видеть данные в консоли. Однако на стороне клиента все, что я получаю, является «неопределенным». Я уверен, что я запускаю метод HTTP.get синхронно.Meteor HTTP.call undefined на стороне клиента, работающий на стороне сервера

.JS файл

if (Meteor.isClient) { 
    Template.test.helpers({ 

     testGET: function(){ 
      var origin = Meteor.call('fetchFromService'); 
      console.log(origin); //-- Displays 'Undefined' 
     } 

    }); 
} 

if (Meteor.isServer) { 
    Meteor.methods({ 
     fetchFromService: function() { 
      this.unblock(); 
      var url = "https://httpbin.org/get"; 
      var result; 

      try{ 
       result = HTTP.get(url); 
      } catch(e) { 
       result = "false"; 
      } 

      console.log(result.data.origin); //-- Displays the data properly 
      return result.data.origin; 
     } 
    }); 
} 
+0

Прочитано: [https://www.discovermeteor.com/blog/understanding-sync-async-javascript-node/](https://www.discovermeteor.com/blog/understanding-sync-async- javascript-node /) Затем это в документации Метеор: [http://docs.meteor.com/#/full/meteor_call](http://docs.meteor.com/#/full/meteor_call) На клиенте, если вы не проходите обратный вызов, и вы не находитесь в заглушке, вызов возвращает ** неопределенный **, и у вас не будет способа получить возвращаемое значение метода. Это потому, что у клиента нет волокон, поэтому на самом деле он не может блокировать удаленное выполнение метода. –

ответ

0

Это асинхронная, вы должны пройти обратный вызов к call функции:

var origin = Meteor.call('fetchFromService', function(err, data) { 
    console.log(data); 
}); 

Если вы не сдадите обратного вызова, origin будет undefined до тех пор, запрос заканчивается.

+0

Спасибо. Я также нашел статью, которая объясняет это немного лучше для моего понимания. [Https://www.discovermeteor.com/blog/understanding-sync-async-javascript-node/](https://www.discovermeteor.com/blog/understanding-sync-async-javascript-node/) –

Смежные вопросы