Javascript 调试程序在Meteor.call客户端/服务器调试后停止
我一直在尝试在服务器端调试Meteor方法。在客户端(Chrome)中进行调试时,调试器将一直执行到下面代码的第4行(“Meteor.call”),并立即返回到第2行(“convlist:function()”),避免执行第2条调试器指令。客户端/服务器控制台中没有错误。我也有服务器端调试器,但运行的进程从未跳转到它(中的服务器调试)。如有任何建议,将不胜感激 客户端:Javascript 调试程序在Meteor.call客户端/服务器调试后停止,javascript,meteor,Javascript,Meteor,我一直在尝试在服务器端调试Meteor方法。在客户端(Chrome)中进行调试时,调试器将一直执行到下面代码的第4行(“Meteor.call”),并立即返回到第2行(“convlist:function()”),避免执行第2条调试器指令。客户端/服务器控制台中没有错误。我也有服务器端调试器,但运行的进程从未跳转到它(中的服务器调试)。如有任何建议,将不胜感激 客户端: Template.conversationList.helpers({ convlist: function(){
Template.conversationList.helpers({
convlist: function(){
debugger;
Meteor.call('getConvList', function(error, result){
if(error){
alert('Error');
} else {
debugger; // just to evaluate the result var
return result;
}
});
//edited 3rd debugger;
debugger;
}});
服务器端:
if (Meteor.isServer) {
Meteor.methods({
getConvList: function(){
debugger;
let myUser = new Array();
myUser.push(Meteor.user()._id);
var newConv = Conversations.aggregate([{ "$match" : { "users": {"$in": [Meteor.user()._id]}}}, { "$project": { lstmsg:1, "conversator": {"$setDifference": ["$users", myUser] }}}]);
return newConv;
}
});
}
Template.conversationList.helpers({
convlist: function(){
debugger;
Meteor.call('getConvList', null, function(error, result){
if(error){
alert('Error');
} else {
debugger; // just to evaluate the result var
return result;
}
});
//edited 3rd debugger;
debugger;
}});
实际上,客户机中的调试控制台正在运行,这就是为什么我知道它会执行每个步骤,直到代码行4,然后停止。我还在端口5858中运行服务器调试。问题是为什么调试器停止在前面提到的行中,而不跳到服务器端,也不返回到客户端的第二条调试器指令。在客户端,它跳过第二条调试器,因为方法调用是异步的,所以它触发方法调用(第4行),立即返回,您是对的,我在方法调用之外插入了第三个调试器,现在调试器正在停止,谢谢。还切换到safari进行服务器调试。出现的问题是,我在服务器端(var newConv)得到一个结果值,但在客户端(var result)这个结果是“未定义的”。有什么想法吗?编辑了答案,其中提到了为什么结果是未定义的。最后我在客户端找到了为什么方法在调试模式下返回未定义的。由于客户端和服务器异步运行,返回值会在稍后出现,因此我必须使用Session.set变量在返回值出现时呈现它。现在正在工作。谢谢