【问题标题】:Meteor wrapAsync syntaxMeteor wrapAsync 语法
【发布时间】:2015-12-21 00:22:52
【问题描述】:

如何使用Meteor wrapAsync

下面是我想要做的事情

if (tempTreatment.groupId === undefined) {
      // create new group
      Meteor.wrapAsync(Meteor.call('createTreatmentGroup', salon, tempTreatment.groupName, tempTreatment.groupName));

      // get group id
      var getGroup = Meteor.wrapAsync(Meteor.call('getTreatmentGroup', salon, tempTreatment.groupName));

      console.log(getGroup);
      tempTreatment.groupId = getGroup._id;
}

我想同步运行这两个Meteor.call函数,但我在console.log(getGroup);上得到undefined,它应该只返回一个对象。

【问题讨论】:

    标签: meteor synchronous


    【解决方案1】:

    Meteor.wrapAsync 是一个服务器端 API,旨在包装需要回调作为最后一个参数的 Node.js 异步函数,通过使用 Fibers 子库 Futures 使它们看起来是同步的。 (更多信息在这里:https://www.discovermeteor.com/blog/wrapping-npm-packages/

    它不打算用于客户端将异步Meteor.call 转换为同步调用,因为在浏览器上,远程方法调用始终是异步的。

    长话短说,您根本无法实现您想要做的事情,您必须使用回调并将第二个方法调用嵌套在第一个方法调用的成功回调中。

    【讨论】:

    • 在 0.9.3 中有 Meteor.wrapAsync 可以使用 Anywhere。这是错误吗?
    • 我没有注意到这一点。我认为他们制作了Meteor.wrapAsync 的客户端版本,以便可以将使用它的代码放入共享文件夹中而不会触发错误,但实际上这是供服务器使用的。如果没有提供回调,wrapAsync 的客户端版本只定义了一个标准的 logErr 回调来使用,它只是记录错误(如果存在):github.com/meteor/meteor/blob/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2016-09-09
    • 1970-01-01
    • 2015-11-25
    • 2018-07-01
    相关资源
    最近更新 更多