【问题标题】:Callback in client for Meteor method call returning undefined客户端回调 Meteor 方法调用返回未定义
【发布时间】:2015-09-05 07:27:20
【问题描述】:

所以我从客户端调用了一个有回调的方法:

Meteor.call("readHeaders", Meteor.user().emails[0].address+'/'+Session.get("file1"), 
            function(err,result){
                console.log(result);
        });

这是被调用的方法:

readHeaders: function(fileName){
        var nodeFS = Meteor.npmRequire('node-fs');
        nodeFS.readFile("somepath/"+fileName,'utf8', function read(err, data){
            if (err) {
                throw err;
            }
            var headers = [data.slice(0,data.indexOf('\n')).split(",")];

            return headers;

        });
    }

正确的结果在服务器上打印,但在客户端返回未定义。有什么建议吗?

【问题讨论】:

  • 您是否尝试在客户端的控制台中记录错误以查看它是什么?您可能需要在 readFile 回调上使用 Meteor.bindEnvironment,因为您正在对外部节点库进行异步调用。
  • @BrianShamblen 他有一个回调,这似乎不是异步问题。
  • 您在 fs 函数的回调中返回标头值。此时,meteor 方法已经返回。查看纤程或 wrapAsync。

标签: javascript meteor


【解决方案1】:

我猜你的方法调用和回调很好,但你的方法本身可能没有返回你所期望的。在return headers 行之前添加console.log(headers) 并确保它是一个对象。

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2016-07-01
    • 2019-11-07
    相关资源
    最近更新 更多