JavaScript ಸಿಂಕ್ರೋನಸ್ (Synchronous) ಮತ್ತು ಅಸಿಂಕ್ರೋನಸ್ (Asynchronous)

JavaScript ಒಂದು ಸಿಂಗಲ್ ಥ್ರೆಡ್ (single thread) ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಇದರರ್ಥ ಇದು ಏಕಕಾಲದಲ್ಲಿ ಒಂದು ಕೆಲಸವನ್ನು ಮಾತ್ರ ಮಾಡುತ್ತದೆ. ಪರಿಣಾಮಕಾರಿ ಕೋಡ್ ಬರೆಯಲು ಇದು ಕಾರ್ಯಗಳನ್ನು (tasks) ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ.

ಸಿಂಕ್ರೋನಸ್ JavaScript (Synchronous JavaScript)

ಸಿಂಕ್ರೋನಸ್ ಕೋಡ್ ಸಾಲು ಸಾಲಾಗಿ (line by line) ಚಲಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಕಾರ್ಯವು ಹಿಂದಿನ ಕಾರ್ಯವು ಮುಗಿಯುವವರೆಗೆ ಕಾಯುತ್ತದೆ. ಇದನ್ನು 'ಬ್ಲಾಕಿಂಗ್' (blocking) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಒಂದು ಕಾರ್ಯವು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುವಲ್ಲಿ, ಇಡೀ ಪ್ರೋಗ್ರಾಂ ನಿಂತುಹೋಗುತ್ತದೆ.

ಅಸಿಂಕ್ರೋನಸ್ JavaScript (Asynchronous JavaScript)

ಅಸಿಂಕ್ರೋನಸ್ ಕೋಡ್ ಸ್ವತಂತ್ರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಕಾರ್ಯಗಳು ಕಾಯುವಾಗ ಇತರ ಕೋಡ್ ಅನ್ನು ತಡೆಯುವುದಿಲ್ಲ. ಇದನ್ನು 'ನಾನ್-ಬ್ಲಾಕಿಂಗ್' (non-blocking) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಕಾರ್ಯವು ಹಿನ್ನೆಲೆಯಲ್ಲಿ (background) ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು ಅದು ಮುಗಿದಾಗ ನಿಮಗೆ ತಿಳಿಸುತ್ತದೆ.

ಅಸಿಂಕ್ರೋನಸ್ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮೂರು ವಿಧಾನಗಳು:

  1. Callbacks: ಒಂದು ಕಾರ್ಯವು ಮುಗಿದ ನಂತರ ಚಲಿಸುವ ಫಂಕ್ಷನ್ (function).
  2. Promises: ಒಂದು ಕಾರ್ಯಾಚರಣೆಯ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಅಥವಾ ವೈಫಲ್ಯವನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಆಬ್ಜೆಕ್ಟ್ (object).
  3. Async/Await: ಅತ್ಯಂತ ಸುಲಭವಾದ ವಿಧಾನ. ಇದು ಥ್ರೆಡ್ ಅನ್ನು ಬ್ಲಾಕ್ ಮಾಡದೆ ಅಸಿಂಕ್ರೋನಸ್ ಕೋಡ್ ಅನ್ನು ಸಿಂಕ್ರೋನಸ್ ಕೋಡ್‌ನಂತೆ ಕಾಣುವಂತೆ ಮಾಡುತ್ತದೆ.

ಸಾಮಾನ್ಯ ಅಸಿಂಕ್ರೋನಸ್ ಕಾರ್ಯಾಚರಣೆಗಳು:

Event Loop ಇದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಇದು ಏಕಕಾಲದಲ್ಲಿ ಹಲವಾರು ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು Call Stack, Web APIs ಮತ್ತು Callback Queue ಅನ್ನು ಬಳಸುತ್ತದೆ.

ಸಾರಾಂಶ (Summary):

Source: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Source: https://www.w3schools.com/js/js_asynchronous.asp Source: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f

Full post: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69