在客户端上从 Meteor.call 获取未定义,但在服务器上变量包含数据
Getting undefined from Meteor.call on client, but on server variable contains data
我在服务器上有一个这样的函数
Meteor.methods({
"functionName": function(data) {
//calculations, http requests etc.
console.log(variable); //shows variable properly
return variable;
}
});
当我在服务器上console.log(variable)
时,我可以看到数据。
现在我在客户端上做Meteor.call
:
Meteor.call('functionName', data, function(err, res) {
console.log(res); //shows undefined
});
这是怎么回事?为什么我不能在客户端上使用响应变量?
编辑:
我已经为此苦苦挣扎了几个小时,我将错误范围缩小到一个HTTP.get()
功能。现在它看起来像这样:
//some calculations
var variable = HTTP.get('url');
return variable.data; //should return an object
我试图用承诺包裹它,但后来它不起作用。它看起来像这样:
//some calculations
function promise() {
var variable = HTTP.get('url');
resolve('Done.');
}
promise().then(function() {
console.log(variable); //doesn't even work on server this way
return variable;
});
根据评论和您的问题,我的猜测是您的 return 语句发生在 HTTP 请求的异步回调中。 您可以使用 Meteor.wrapAsync 或 Promise 使这些请求同步并获取有效的返回语句。
由于同步调用 http 而发生此问题。这里真正发生的事情不是等待 http 调用响应。你应该使用Meteor.wrapAsync;
相关文章:
- php文件中包含的jquery文件在服务器上不起作用
- 将所有angular2捆绑包包含在index.html中会使导入从内存获取数据,而不是再次从服务器请求数据
- 有没有其他方法可以在远程服务器上包含php文件?除了<?php include()>
- 如何使用经典的ASP在服务器端包含javascript文件
- 从 SSH 服务器获取 JSON 数据,其中包含 Javascript/Jquery 中的 url
- 如何使用 NodeJS Express 服务器在 HTML 中包含 JS 文件
- 我需要一种方法来包含http服务器
- 在服务器端环境或命令行环境中将一个 javascript 文件“包含”到另一个文件
- React 组件中的字符串插值,其中包含从服务器返回的字符串
- 在客户端上从 Meteor.call 获取未定义,但在服务器上变量包含数据
- 如何从 Blogger 页面(其中包含投票)存储和访问 javascript 变量,而无需从我自己的服务器托管博客
- 如何在没有 ajax 调用或服务器端语言的情况下包含 HTML/文本文件
- 如何对 Apache 服务器进行签名,以便来自目录的所有请求都通过 HTTPS 并包含您的私钥
- 如何组合两个 javascript 以包含服务器时间而不是用户时间的 ajax 调用
- 当选择包含*时,使用ADO到Oracle服务器的查询失败未指定错误
- POST到服务器,其中encodeURIComponent包含><导致301重定向的字符
- AJAX:为什么服务器端的$_REQUEST不包含GET方法在URL中从JS传递的变量
- 在静态html页面中包含json文件(不托管在服务器上)
- 我应该如何编写一个同时包含服务器端和客户端代码的node.js web应用程序
- 将socket.io服务器包含到我的html中