Meteor.call()具有返回值,而服务器具有异步工作

时间:2015-12-15 12:15:48

标签: javascript meteor meteor-helper

我正在使用Meteor,我正在尝试从外部数据库检索数据(neo4j用于该情况)。

我的问题是当我Meteor.call()从客户端到服务器时,我需要在服务器函数中有一个return语句。但是从数据库中检索数据本身就是异步的。

这是我所拥有的最新内容:

client.js:

Template.test.created = function () {
    Meteor.call('getData', id, function (error, response) {
        if (response) {
            console.log(response); //<-- reponse = "???"
        }
    });
}

server.js:

Meteor.methods({
    "getData": function (id) {
        neo.commit ( //<-- async function which expect a callback
            id,
            function(error, response) {
                console.log(response); //<-- only here I have the response I want but now I cant "return" it.
                return response;
            }
        );
        return "???"; //<-- the actual return that is being send back
    }
});    

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用var jsList = new Array(); <c:forEach items="${javaList}" var="javaLvar" varStatus="status"> objJs = new Object(); objJs.someProperty = ${javaLvar}; jsList.push(objJs); </c:forEach> 来解决问题,将代码更改为(可能需要进行更多更改,具体取决于您的代码库):

Future

您可以在以下链接中阅读有关Meteor异步模式的更多信息:

Async On Meteor Server

Meteor Async Guide

Meteor Patterns: Call an asynchronous function and use its returned value

随意询问您是否需要进一步的帮助。