javascript – 使Meteor方法同步

前端之家收集整理的这篇文章主要介绍了javascript – 使Meteor方法同步前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直试图使这个功能同步.我已经阅读了几篇关于Async的Stack Overflow帖子,但是我无法理解我是如何能够实现这种同步的.截至目前,它是异步的,因此它在进入回调函数之前返回undefined.

我从客户端调用它:

  1. Meteor.call('screenName',function(error,result) {
  2. if (error) {
  3. console.log(error);
  4. }
  5. else {
  6. window.alert(result);
  7. }
  8. }

这是服务器端方法

  1. Meteor.methods({
  2. 'screenName': function() {
  3. T.get('search/tweets',{
  4. q:'#UCLA',count:1
  5. },function(err,data,response) {
  6. var temp = data.statuses[0].user.screen_name;
  7. console.log(temp);
  8. return temp;
  9. }
  10. )
  11. }
  12. });

我正在使用Twitter API,我想要做的基本上是从JSON中检索屏幕名称并将其返回到客户端的变量.但这是返回undefined因为回调是在编译器到达’screenName’函数结束后编译的.

我希望它从回调函数返回值,但读取其他示例并没有帮助我理解如何转换我的代码.我需要使这个功能同步,但我不知道该怎么做.

解决方法

只需使用 Meteor.wrapAsync将异步T.get转换为同步风格的!

它实际上不会以纯粹的“同步”方式执行,它使用的是一种称为光纤的技巧,但您应该阅读文档以了解更多信息.
开始:

  1. var Tget = Meteor.wrapAsync(T.get);
  2.  
  3. Meteor.methods({
  4. 'screenName': function() {
  5. return Tget({
  6. q : '#UCLA',count : 1
  7. }).status[0].user.screen_name;
  8. }
  9. });

猜你在找的JavaScript相关文章