【问题标题】:Meteor.wrapAsync() not workingMeteor.wrapAsync() 不工作
【发布时间】:2016-01-05 22:28:01
【问题描述】:

我正在遵循The Meteor Chef 的指南来包装异步函数并同步调用它。但是,当代码执行时,它似乎只是完全跳过了方法调用。不知道我做错了什么。

if (!err) {
  Meteor.methods({
    'ldapLogin': function(username, password) {
      var syncFunc = Meteor.wrapAsync(processLdapLogin);
      var result = syncFunc(username, password, Meteor.user());

      console.log(result);
    }
  });
  Meteor.call('ldapLogin', username, password);
}

【问题讨论】:

  • 你从哪里打电话给processLdapLoginWrapAsync()?你所做的只是声明一个 Meteor 方法,你必须调用它才能让它工作。
  • 嗯,这就是我想知道的,但我在网上阅读的多个指南都没有显示调用新创建的方法......
  • 似乎根本不需要将其放入 Meteor 方法中。删除第 2、3、8、9 行,看看情况如何。 more info
  • 你看到什么样的错误?
  • 我已经更改了我的原始帖子以包含来自答案/cmets 的建议,现在我在上面的第 2 行收到以下错误:Error invoking Method 'ldapLogin': Method not found [404]

标签: javascript asynchronous meteor


【解决方案1】:

Meteor Methods 去服务器端

Meteor.call("ldapLogin", username, password, Meteor.user()); 调用在客户端(Web 浏览器端)进行

现在,如果您在客户端代码中传递参数(用户名、密码...),您还应该在方法中引用这些参数:

Meteor.methods({
    'processLdapLoginWrapAsync': function(username, password) {
      var syncFunc = Meteor.wrapAsync(processLdapLogin);
      var result = syncFunc(username, password, Meteor.user());

      console.log(result);
    }
  });

(当然,如果这确实是客户的意图)

否则(如果用户名/密码来自服务器端,我相信这确实是您在这里的意图)您不应该从客户端传递这些参数而只调用:

Meteor.call("ldapLogin") 在客户端

【讨论】:

    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2023-03-03
    • 2016-03-28
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多