В настоящее время я пытаюсь узнать, как выполнять 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;
}
});
}
Прочитано: [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) На клиенте, если вы не проходите обратный вызов, и вы не находитесь в заглушке, вызов возвращает ** неопределенный **, и у вас не будет способа получить возвращаемое значение метода. Это потому, что у клиента нет волокон, поэтому на самом деле он не может блокировать удаленное выполнение метода. –