【发布时间】:2015-06-22 14:03:24
【问题描述】:
我想为客户端和服务器定义相同的方法,所以我在common/methods.js中有以下代码。
Meteor.methods({
doSomething: function (obj) {
if(this.isSimulation) {
console.log('client');
}
if(!this.isSimulation) {
console.log('server');
}
console.log('both');
return "some string";
}
});
然后我在client/dev.js里面调用了这个方法。
Meteor.call('doSomething', someObj, function (e, data) {
console.log(e);
console.log(data);
});
在服务器的控制台上,我可以阅读:
I20150622-21:56:40.460(8)? server
I20150622-21:56:40.461(8)? both
在客户端 (Chrome for Ubuntu v43.0.2357.125 (64-bit)) 控制台上,打印了 e 和 data 参数,但来自 Meteor 方法的 console.log() 不是我预期的它输出字符串
client
both
为什么 console.log() 在 Meteor 方法中的客户端上不起作用?
为了调试,我将Meteor.methods 拆分为单独的客户端和服务器代码。然后引入一个大循环所以服务器端的操作所以需要很长时间才能完成,而客户端却很快。
服务器
doSomething: function (obj) {
var x = 0;
for(var i = 0; i< 9999999; i++) {
x++;
}
console.log(x);
return "some string";
}
客户
doSomething: function (obj) {
console.log('client');
}
仍然没有在客户端上打印任何消息。
【问题讨论】:
-
console.log(this.isSimulation) 给你什么?
-
@Robin 它在服务器上给了我
false,而在客户端上什么也没有。
标签: javascript methods meteor client console.log