Atomics - método compareExchange ()

compareExchangeEl método compara e intercambia un valor de reemplazo si el valor dado no es el mismo que el valor anterior. Devuelve el valor anterior en esa posición. Esta operación atómica garantiza que no se pueda realizar ninguna otra escritura hasta que se vuelva a escribir el valor modificado.

Sintaxis

Atomics.compareExchange(typedArray, index, expectedValue, replacementValue)

Parámetros

  • typedArray es la matriz de tipo entero.

  • index es posición en typedarray.

  • expectedValue para comprobar la igualdad.

  • replacementValue a cambio.

Regreso

Devuelve el valor antiguo en la posición dada.

Excepciones

  • TypeError en caso de que la matriz pasada no sea una matriz de tipo entero.

  • RangeError si el índice pasado está fuera del límite en la matriz con tipo.

Ejemplo

A continuación se muestra el código para implementar JavaScript Atomics:

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>Atomics Example</title>
      <style>
         .result {
            font-size: 20px;
            border: 1px solid black;
         }
      </style>
   </head>
   <body onLoad="operate();">
      <h1>JavaScript Atomics Properties</h1>
      <div class="result"></div>
      <p>Atomics.compareExchange(arr, 0, 6, 2)</p>
      <p>Atomics.load(arr, 0)</p>
      <script>
         function operate(){
            let container = document.querySelector(".result");
            // create a SharedArrayBuffer
            var buffer = new SharedArrayBuffer(25);
            var arr = new Uint8Array(buffer);
            // Initialise element at zeroth position of array with 6
            arr[0] = 6;
            container.innerHTML = Atomics.compareExchange(arr, 0, 6, 2) + '<br/>' + Atomics.load(arr, 0);
         }
      </script>
   </body>
</html>

Salida

Verifique el resultado.