我一直在关注其他Stack Overflow问题,但我仍然无法理解。我在浏览器控制台中收到此错误:
Exception in delivering result of invoking 'formMethod1': TypeError: callback is not a function
我把我的代码放在下面并对错误引用的行进行注释。似乎“错误”对象没有被传递,但回调实际上被调用,整个事情都经过,它只是从来没有捕获错误。
submitForm1(entry,
processForm1(err,res,entry,function(err,res){
//Done processing
console.log(err); //Doesn't work
console.log(res); //Doesn't work
console.log("Done"); //Works
})
)
function submitForm1(entry, callback) {
Meteor.call('formMethod1', {
params: {
user: Meteor.user().username,
activity: entry
}
}, function(err,res){
if(err){
console.log(err) //Works
callback(err, res, entry) //This is where the error happens
} else{
callback(undefined, res, entry)
}
}
);
}
function processForm1(err, res, entry, callback) {
console.log(err); //Doesn't work
console.log(res); //Works
console.log(entry); //Works
if (err) {
if (err.error == "1001") { //Activity not found
//Handle Error
callback("Activity Not Found");
} else {
//Handle Error
callback(err.message);
}
} else { //No Errors
callback(undefined,"Submitted");
}
}
编辑:你们都让我朝着正确的方向前进。这是更正后的代码:
submitForm1(entry, function(err,res){
processForm1(err,res,entry,function(err,res){
//Done processing
console.log(err);
console.log(res);
console.log("Done");
})
});
答案 0 :(得分:1)
您正在调用您作为回调传递的函数,而不是...传递它,但是然后将另一个函数作为参数传递给 。我认为你把两种相同功能的风格混合在一起。修复如下:
msi
答案 1 :(得分:1)
您正在将.goal-lower-well {
height: 300px;
width: 700px;
/* margin-top: -42px; */ Remove it
position: relative;
z-index: 0;
}
作为回传传递给processForm1
。如果这样做,您必须确保在submitForm1
内调用的签名与processForm1
匹配。
这意味着您需要在(err, res, entry, callback)
内传递一个方法作为回调,并在其中调用。有意义吗?
为简单起见,我们这样说:
submitForm1
不,你看错了。