День добрый,
Существует данный вызов к методу на сервере
Meteor.call('ActionOn',{
deck:game.chosenCardId.deck,
index:game.chosenCardId.index
},{
deck:model.deck,
index:model.index
},state.type,false,function(error,result)
{
if(!error)
{
if(result)
{
log.push(result);
if(result == "Success")
{
log.push("Model successfully action");
}
}
else
{
log.push("Status of shooting unknown");
}
}
else if(error.error == "battle_exist_error")
{
log.push("ID check unsuccesfull");
}
else if(error.error == 'order_error')
{
log.push("This model can't turning now, because another have priority");
}
else if(error.error == 'immovable')
{
log.push("Model is immovable");
}
else if(error.error == 'type_unidentified')
{
log.push("This type of action isn't supported");
}
else
{
log.push("Unidentified error rise from server");
}
_logDep.changed();
_turnDep.changed();
});
Соответственно на стороне сервера описан Meteor.methods с соответствующим именем и параметрами.
Проблема в том, что по каким то причинам метод вызывается дважды, последовательно.
В большинстве ситуации это приводит к тому, что после правильной отработки в первый раз второй раз превращает результат в кашу.
В чем причина такого поведения и как решить проблему?
UPD: Стек вызовов тянется именно от этого Meteor.call(), набор параметров тот же.
Так же callback, который должен отработать, реагирует только на return из
второго вызова, который в большинстве случаев возвращает Meteor.error, что приводит к результату в виде выводе пользователю ошибки какого либо рода (чаще всего с порядком хода), но при этом результаты первого вызова, который прошел правильно, заносятся в актуальное состояние и отображаются опять же пользователю.
Это порождает видимую разницу, когда сообщили о неверных действиях, но само действие свершилось