有人知道如何从客户端控制Meteor.methods的最佳方法

时间:2016-09-07 01:22:40

标签: meteor

我只是想知道Meteor.methods结果存根。当我使用Meteor.call时,我尝试处理结果集但是当结果集超出Meteor.call区域时返回undefined。所以我认为如果我使用Session它可以解决。但有时这种方式是行不通的。所以,如果你们,让你知道控制这个主题的最佳方式,请告诉我你的解决方案!!

感谢您的评论,但我无法理解我的逻辑。因为我想从我们的旧项目代码中获取javaScript库模块。它通过iframe的html上下文处理jQuery的前端。 FirstTime,我尝试使用iframe标签计算出来。但它已经为跨域提出了问题。所以我尝试在Meteor上找到关于跨域的解决方案,但任何地方都没有解决方案。因此,我在思考如何解决它,然后我决定使用Meteor.http!这是来自客户端的回调函数的服务器端和内部块的工具html.content的成功。但是我无法将结果移出回调函数。我应该将方法的结果(iframe html内容)提供给我们的旧javascript代码...这就是我尝试这种方式的原因!对此有何想法?我包含javascript代码,它将有助于理解。

...

drawSvg2: function(){

            var objIFrame   = $("#iFrame_"+m.canvasIdx()).contents();
            var objList     = objIFrame.find('.page');
            var len         = objList.length;

            for (i=0; i<len; i++){
                var obj = objList[i];
                var children = obj.children;   //childNodes;

                var num = 0;
                for (var k = 0; k < children.length; k++) {
                    var children2 = children[k].children;

                    for (var j = 0; j < children2.length; j++) {
                        if(children2[j].children[0].nodeName == "P"){
                            m.textArray(num, new Object());
                            c.canvasFetch(children[k], children2[j], "", m.textArray()[num], num);
                        }else{
                            m.textArray(num, new Object());
                            c.canvasFetch(children[k], children2[j], children2[j].children[0], m.textArray()[num], num);
                        }
                        num++;
                    }
                }
            }
            v.drawSvg3();
        },

...

这是一个巨大的功能,并由jQuery处理前端,所以我不能把它放在Meteor.methods ..

1 个答案:

答案 0 :(得分:0)

使用Meteor.call的方法:

Meteor.call('methodName', param1Value, param2Value,..., function (error, result) { ... } );

最后一个参数是回调。当结果准备好时,Meteor会调用此回调函数。在回调函数的主体内部,您可以使用结果执行任何操作。为什么需要将此结果返回给调用函数?你可以拆分逻辑,以便它调用Meteor.call,并处理回调中的其余部分吗?