У меня проблема с двумя версиями фрагмента кода, которые, как ожидается, будут делать то же самое, одна с классическим подходом (без веб-разработчика) и вторая с веб-мастером.
Я застрял в следующей проблемев этом фрагменте кода:
else if (mode == 'computer') {
new Promise( resolve => {
let HitTemp = JSON.parse(JSON.stringify(HitCurrent));
let firstWorker = new Worker(workerScript);
firstWorker.onmessage = function (event) {
resolve( event.data );
}
firstWorker.postMessage([HitTemp, HitTemp.playerCurrent, maxNodes]);
}).then(({result}) => {
var HitResult = result.HitResult;
[a, b] = HitResult.coordPlayable; // <-- get values from result
//move for loop inside the callback
for (var k = 0; k < 8; k++) {
exploreHitLine(HitCurrent, a, b, k, 'drawing');
}
// Clean playable hits
cleanHits('playable', HitCurrent);
// Display current game board
displayCurrentHit(HitCurrent);
});
}
}
Но HitCurrent
, представляющий текущую игровую доску, не отображает реальную ситуацию, я имею в виду, как только вычисленное попадание выполнено (веб-работником).
Я не могу понять, почему новое вычисленное попадание не отображается с
displayCurrentHit(HitCurrent);
Классический подход (без веб-разработчика), который работает, закодирован так:
else if (mode == 'computer') {
HitTemp = JSON.parse(JSON.stringify(HitCurrent));
result= negaMax(HitTemp, HitTemp.playerCurrent, maxNodes);
a = HitTemp.coordPlayable[0];
b = HitTemp.coordPlayable[1];
// Explore all directions for computed hit
for (k = 0; k < 8; k++) {
exploreHitLine(HitCurrent, a, b, k, 'drawing');
}
// Clean playable hits
cleanHits('playable', HitCurrent);
// Display current game board
displayCurrentHit(HitCurrent);
}
Может быть, существуют конфликты между Глобальными и Локальными переменными.
Если кто-то может сказать мне, эквивалентны ли 2 фрагмента кода выше?На данный момент это не так.
С уважением