【问题标题】:event handler calling wrapped async functions in Meteor事件处理程序在 Meteor 中调用包装的异步函数
【发布时间】:2014-09-08 19:58:20
【问题描述】:

var twitPost = Meteor._wrapAsync(twit.post.bind(twit));

function process(screen_name)
{
  twitGet('users/show', {'screen_name': screen_name});
}

对 process("screen_name") 的同步调用可以正常工作,但是

  stream.on('tweet', function(tweet)
  {
    process(tweet.user.screen_name);
  });

收益Error: Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.

任何想法如何/如果我能做到这一点?我想通过一些处理函数来做除了调用 twitPost 之外的其他事情。

【问题讨论】:

    标签: javascript node.js asynchronous meteor event-handling


    【解决方案1】:

    在编写时,使用 Meteor 代码的方法(尤其是访问集合的方法)需要用 Fiber 包装。一种方法是使用Meteor.bindEnvironment:

    stream.on('tweet', Meteor.bindEnvironment(function(tweet) {
      process(tweet.user.screen_name);
    }));
    

    【讨论】:

    • 效果很好。谢谢你的解释!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多