【问题标题】:How to return value on Meteor.call() in client?如何在客户端返回 Meteor.call() 的值?
【发布时间】:2015-10-18 01:38:10
【问题描述】:

所以我一直在使用带有 MeteorJS 的 twitter API,而我正在尝试做的只是在浏览器上显示 twitter 用户的屏幕名称。这是我到目前为止所做的:

Meteor.methods({
  'screenName': function() {
      T.get('search/tweets',
      {
        q:'#UCLA',
        count:1
      },
      function(err,data,response) {
        console.log(data.statuses[0].user.screen_name);
        return data.statuses[0].user.screen_name;
      }
    )
  }
});

所以我从我的 isClient 端调用方法“screenName”。我从客户端这样称呼它:

  var temp = Meteor.call('screenName');

在服务器端,它在控制台上打印出正确的值,但无法返回该值。它一直显示未定义。

我是一个 javascript 初学者,所以我可能会犯一个我没有立即看到的错误,所以如果有人可以帮助我,我将不胜感激。

谢谢!

【问题讨论】:

    标签: javascript twitter meteor


    【解决方案1】:

    您需要在调用中放置一个函数才能获得返回。

    Meteor.call(
        'screenName',
        function(error, result){
            if(error){
                console.log(error);
            } else {
                console.log(result);
            }
        }
    );
    

    您可以在文档中阅读有关调用功能的更多信息:http://docs.meteor.com/#/full/meteor_call

    【讨论】:

    • 嘿,你能解释一下为什么我们需要这样做吗?本质上,这是一个回调函数,对吗?如果我错了,请纠正我。
    • 是的。来自文档:在客户端上,如果您不传递回调并且您不在存根中,则调用将返回未定义,并且您将无法获取方法的返回值。那是因为客户端没有纤程,所以实际上没有任何方法可以阻止远程执行方法。
    • 什么是存根,什么是光纤?如果您可以将我链接到我可能会阅读此内容的地方,那将非常有帮助。谢谢!
    • 纤维和线程博文:bjouhier.wordpress.com/2012/03/11/…
    猜你喜欢
    • 2018-01-19
    • 2018-09-29
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多