Javascript webworker - Эквивалентность 2 фрагментов кода - PullRequest
0 голосов
/ 28 декабря 2018

У меня проблема с двумя версиями фрагмента кода, которые, как ожидается, будут делать то же самое, одна с классическим подходом (без веб-разработчика) и вторая с веб-мастером.

Я застрял в следующей проблемев этом фрагменте кода:

 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 фрагмента кода выше?На данный момент это не так.

С уважением

...