У меня проблемы, когда я вызываю функцию, которая вызывает другую функцию, которая продолжает обратный вызов, до тех пор, пока головоломка не будет решена или не будет найден никаких ходов.Проблемы с одновременным вызовом двух функций
Дело в том, что мне нужно вызвать функцию дважды, но с разными значениями.
Я попытался сохранить значения, но как только я вызову вторую функцию, которая перезвонит, она переопределяет значения.
наиболее важные фрагменты кода здесь:
function splitways(){
var strsp,aa=dir,bb=xy;
if(nextRock()){
if(xy!=start){
strsp=(aa+""+bb+""+dir+""+xy)*1;
if(!(strsp in arr)){
arr[strsp]=strsp;
caller(dir,xy);
}
}else{
count++;
}
}
}
function caller(num,pos){
var aa=num,bb=pos;
splitways();
//--
dir=aa;
xy=bb;
//--
dir==1?dir=4:dir--;
splitways();
}
Notes, splitways()
изменяет значения dir
и xy
, поэтому я попытался изменить их обратно, а затем необходимости модифицировать их перед вторым вызовом splitways()
, Но при первом звонке все стирается.
Я пробовал все, что мог, за 2 часа ... Лучший снимок, который у меня был, - это кешировать их на var aa=num,bb=pos;
, но это не сработало.
Любые идеи оценили
не беспокойтесь о globals 'dir, xy, start, arr и т. Д. И т. Д.' Они предназначены – mithril333221
@ Joseph no, я взял на это меры. Если вас интересует полный код, см. Http://jsfiddle.net/WgBpJ/ – mithril333221
проблема заключается в том, что сами глобалы. глобальные переменные здесь настолько изменчивы, доступны везде, где вы не можете отслеживать, кто что изменил. – Joseph