Among the Atomic Operations, there is a method Atomics.sub() that is used to subtract a given value at a given position in the array and return the old value at that position. No other write operation can happen until the modified value is written back.
Syntax:
Atomics.sub(typedArray, index, value)
Parameters:
- typedarray: It is the shared integer typed array you want to modify.
- index: It is the position in the typedArray from where you want to subtract a value from.
- value : It is the number you want to subtract.
Return Value: Atomics.sub() returns the old value at the given position (typedArray[index]).
Examples of the above function are provided below.
Examples:
Input : arr[0] = 9; Atomics.sub(arr, 0, 3); Output : 9
Input : arr[0] = 3; Atomics.sub(arr, 0, 2); Output : 3
Examples of the above function are provided below.
Example 1:
javascript
// creating a SharedArrayBuffer let buf = new SharedArrayBuffer(25); let arr = new Uint8Array(buf); // Initialising element at zeroth position of array with 9 arr[0] = 9; // Displaying the return value of the Atomics.sub() method console.log(Atomics.sub(arr, 0, 3)); // Displaying the updated SharedArrayBuffer console.log(Atomics.load(arr, 0)); |
Output :
9 6
Example 2:
javascript
// creating a SharedArrayBuffer let buf = new SharedArrayBuffer(25); let arr = new Uint8Array(buf); // Initialising element at zeroth position of array with 3 arr[0] = 3; // Displaying the return value of the Atomics.sub() method console.log(Atomics.sub(arr, 0, 2)); // Displaying the updated SharedArrayBuffer console.log(Atomics.load(arr, 0)); |
Output:
3 1
Application: Whenever we want to update(subtract) a value at a specified position in a given array and want the older value which was at that position to be returned, we use the Atomics.sub() operation in JavaScript.
Example:
javascript
// creating a SharedArrayBuffer let mybuffer = new SharedArrayBuffer(25); let myarray = new Uint8Array(mybuffer); // Initialising the element at zeroth position of array myarray[0] = 40; // Displaying the return value of the Atomics.sub() method console.log(Atomics.sub(myarray, 0, 20)); // Displaying the updated SharedArrayBuffer console.log(Atomics.load(myarray, 0)); |
Output :
40 20
Exceptions :
- If the typedArray is not one of the allowed integer types then the Atomics.sub() operation throws a TypeError.
- If the typedArray is not a shared typed array then the Atomics.sub() operation throws a TypeError.
- If the index used as an argument to the Atomics.sub() operation is out of the bound in the typedArray then the Atomics.sub() operation throws a RangeError.
Supported Browser:
- Google Chrome
- Microsoft Edge
- Firefox
- Opera
- Safari
We have a complete list of Javascript Atomic methods, to check those please go through this JavaScript Atomics Complete Reference article.
We have a Cheat Sheet on Javascript where we covered all the important topics of Javascript to check those please go through Javascript Cheat Sheet-A Basic guide to JavaScript.