Node.js ਵਿੱਚ ਇਵੈਂਟਸ ਅਤੇ ਅਸਿੰਕ੍ਰੋਨੀਸੀਟੀ ਨੂੰ ਸੰਭਾਲਣਾ

Node.js ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਵਿਕਸਤ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ, ਇਵੈਂਟ ਹੈਂਡਲਿੰਗ ਅਤੇ ਅਸਿੰਕ੍ਰੋਨਸ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਸਮਝਣਾ ਅਤੇ ਕੰਮ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। Node.js ਇੱਕ ਇਵੈਂਟ-ਸੰਚਾਲਿਤ ਅਤੇ ਅਸਿੰਕ੍ਰੋਨਸ ਮਾਡਲ 'ਤੇ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਜਿਸ ਨਾਲ ਕਾਰਜਾਂ ਨੂੰ ਪੂਰਾ ਹੋਣ ਦੀ ਉਡੀਕ ਕੀਤੇ ਬਿਨਾਂ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਅਸਲ ਵਿੱਚ, ਇਵੈਂਟ ਹੈਂਡਲਿੰਗ ਅਤੇ ਅਸਿੰਕ੍ਰੋਨਸ ਪ੍ਰੋਸੈਸਿੰਗ ਨੂੰ ਸਮਝਣਾ ਅਤੇ ਸਹੀ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕਰਨਾ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਦਾ ਇੱਕ ਜ਼ਰੂਰੀ ਹਿੱਸਾ ਹੈ।

 

Node.js ਵਿੱਚ ਇਵੈਂਟਸ ਅਤੇ ਕਾਲਬੈਕਸ

Node.js ਵਿੱਚ, ਇਵੈਂਟਸ ਅਤੇ ਕਾਲਬੈਕ ਅਸਿੰਕਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਣ ਵਿੱਚ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਭੂਮਿਕਾ ਨਿਭਾਉਂਦੇ ਹਨ। ਇਵੈਂਟਸ ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਅੰਦਰ ਵਾਪਰਨ ਵਾਲੀਆਂ ਕੁਝ ਕਾਰਵਾਈਆਂ ਜਾਂ ਘਟਨਾਵਾਂ ਨੂੰ ਸੰਭਾਲਣ ਅਤੇ ਪ੍ਰਤੀਕਿਰਿਆ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਹਨ। ਕਾਲਬੈਕ, ਦੂਜੇ ਪਾਸੇ, ਉਹ ਫੰਕਸ਼ਨ ਹਨ ਜੋ ਕਿਸੇ ਖਾਸ ਘਟਨਾ ਜਾਂ ਓਪਰੇਸ਼ਨ ਦੇ ਪੂਰਾ ਹੋਣ ਤੋਂ ਬਾਅਦ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ।

Node.js ਇੱਕ ਇਵੈਂਟ-ਸੰਚਾਲਿਤ ਆਰਕੀਟੈਕਚਰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜਿੱਥੇ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਵੱਖ-ਵੱਖ ਹਿੱਸੇ ਇਵੈਂਟਾਂ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹਨ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਸੁਣ ਸਕਦੇ ਹਨ। ਇਹ ਇੱਕੋ ਸਮੇਂ ਕਈ ਕਾਰਜਾਂ ਦੀ ਕੁਸ਼ਲ ਅਤੇ ਗੈਰ-ਬਲੌਕਿੰਗ ਪ੍ਰੋਸੈਸਿੰਗ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।

ਕਾਲਬੈਕ ਆਮ ਤੌਰ 'ਤੇ ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ Node.js ਵਿੱਚ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਉਹਨਾਂ ਨੂੰ ਫੰਕਸ਼ਨਾਂ ਲਈ ਆਰਗੂਮੈਂਟ ਵਜੋਂ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਓਪਰੇਸ਼ਨ ਪੂਰਾ ਹੋਣ ਤੋਂ ਬਾਅਦ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਕਾਲਬੈਕ ਅਸਿੰਕ੍ਰੋਨਸ ਕਾਰਜਾਂ ਦੌਰਾਨ ਹੋਣ ਵਾਲੇ ਨਤੀਜਿਆਂ ਜਾਂ ਗਲਤੀਆਂ ਨੂੰ ਸੰਭਾਲਣ ਦਾ ਇੱਕ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।

ਇੱਥੇ Node.js ਵਿੱਚ ਇੱਕ ਕਾਲਬੈਕ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਇੱਕ ਉਦਾਹਰਨ ਹੈ:

// A function that takes a callback
function fetchData(callback) {
  // Simulate fetching data from an asynchronous operation
  setTimeout(() => {
    const data = { name: 'John', age: 30 };
    callback(null, data); // Pass the data to the callback
  }, 2000); // Simulate a 2-second delay
}

// Call the fetchData function and provide a callback
fetchData((error, data) => {
  if (error) {
    console.error('Error:', error);
  } else {
    console.log('Data:', data);
  }
});

ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਸਾਡੇ ਕੋਲ ਇੱਕ ਫੰਕਸ਼ਨ ਹੈ fetchDataਜਿਸਨੂੰ ਇੱਕ ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨ (ਉਦਾਹਰਨ ਲਈ, ਇੱਕ API ਕਾਲ ਕਰਨਾ ਜਾਂ ਇੱਕ ਡੇਟਾਬੇਸ ਦੀ ਪੁੱਛਗਿੱਛ ਕਰਨਾ) ਤੋਂ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਨਕਲ ਕਰਦਾ ਹੈ। ਇਹ ਇੱਕ ਆਰਗੂਮੈਂਟ ਵਜੋਂ ਇੱਕ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨ ਲੈਂਦਾ ਹੈ।

ਫੰਕਸ਼ਨ ਦੇ ਅੰਦਰ fetchData, ਅਸੀਂ setTimeoutਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਵਰਤਦੇ ਹਾਂ। 2-ਸਕਿੰਟ ਦੀ ਦੇਰੀ ਤੋਂ ਬਾਅਦ, ਅਸੀਂ ਕੁਝ ਨਮੂਨਾ ਡੇਟਾ ਬਣਾਉਂਦੇ ਹਾਂ ਅਤੇ ਇਸਨੂੰ ਇੱਕ ਗਲਤੀ ਦੇ ਨਾਲ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨ ਵਿੱਚ ਪਾਸ ਕਰਦੇ ਹਾਂ (ਜੋ nullਇਸ ਕੇਸ ਵਿੱਚ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ)।

ਫੰਕਸ਼ਨ ਦੇ ਬਾਹਰ fetchData, ਅਸੀਂ ਇਸਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ ਅਤੇ ਇੱਕ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਾਂ। ਕਾਲਬੈਕ ਵਿੱਚ, ਅਸੀਂ ਕਿਸੇ ਵੀ ਸੰਭਾਵੀ ਤਰੁੱਟੀ ਨੂੰ ਸੰਭਾਲਦੇ ਹਾਂ ਅਤੇ ਪ੍ਰਾਪਤ ਕੀਤੇ ਡੇਟਾ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦੇ ਹਾਂ। ਜੇਕਰ ਕੋਈ ਗਲਤੀ ਹੈ, ਤਾਂ ਅਸੀਂ ਇਸਨੂੰ ਕੰਸੋਲ 'ਤੇ ਲੌਗ ਕਰਦੇ ਹਾਂ। ਨਹੀਂ ਤਾਂ, ਅਸੀਂ ਡੇਟਾ ਨੂੰ ਲੌਗ ਕਰਦੇ ਹਾਂ।

ਇਹ ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਣ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ Node.js ਵਿੱਚ ਕਾਲਬੈਕ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਇੱਕ ਬੁਨਿਆਦੀ ਉਦਾਹਰਨ ਹੈ ਇੱਕ ਵਾਰ ਉਪਲਬਧ ਹੋਣ 'ਤੇ ਡੇਟਾ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਅਸਲ-ਸੰਸਾਰ ਦੇ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ, ਕਾਲਬੈਕਸ ਦੀ ਵਰਤੋਂ ਆਮ ਤੌਰ 'ਤੇ ਡਾਟਾਬੇਸ ਪੁੱਛਗਿੱਛਾਂ, API ਬੇਨਤੀਆਂ, ਅਤੇ ਹੋਰ ਅਸਿੰਕ੍ਰੋਨਸ ਕਾਰਜਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।

 

ਵਾਅਦਿਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਅਤੇ ਅਸਿੰਕ੍ਰੋਨੀਸੀਟੀ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਅਸਿੰਕ/ਉਡੀਕ ਕਰਨਾ

"ਅਸਿੰਕਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਵਾਅਦਾ ਅਤੇ ਅਸਿੰਕ/ਉਡੀਕ ਦੀ ਵਰਤੋਂ ਕਰਨਾ" Node.js ਵਿੱਚ ਇੱਕ ਆਸਾਨ ਅਤੇ ਕੁਸ਼ਲ ਤਰੀਕੇ ਨਾਲ ਅਸਿੰਕ੍ਰੋਨਸ ਕਾਰਜਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਆਮ ਪਹੁੰਚ ਹੈ। ਵਾਅਦਾ ਇੱਕ JavaScript ਵਸਤੂ ਹੈ ਜੋ ਅਸਿੰਕਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਅਤੇ ਪ੍ਰਬੰਧਨ ਕਰਨ ਵਿੱਚ ਸਾਡੀ ਮਦਦ ਕਰਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਅਸਿੰਕ/ਵੇਟ ਇੱਕ ਸਿੰਟੈਕਸ ਹੈ ਜੋ ਸਾਨੂੰ ਸਮਕਾਲੀ ਕੋਡ ਦੇ ਸਮਾਨ ਤਰੀਕੇ ਨਾਲ ਅਸਿੰਕ੍ਰੋਨਸ ਕੋਡ ਲਿਖਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।

ਵਾਅਦਾ ਅਤੇ ਅਸਿੰਕ/ਉਡੀਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਅਸੀਂ ਅਸਿੰਕ੍ਰੋਨਸ ਕੋਡ ਨੂੰ ਹੋਰ ਆਸਾਨੀ ਨਾਲ ਅਤੇ ਅਨੁਭਵੀ ਢੰਗ ਨਾਲ ਲਿਖ ਸਕਦੇ ਹਾਂ। ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਸਾਨੂੰ ਹੁਣ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਅਤੇ ਕਾਲਬੈਕ ਨਰਕ (ਨੇਸਟਡ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨਾਂ) ਨਾਲ ਨਜਿੱਠਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ। ਇਸ ਦੀ ਬਜਾਏ, ਅਸੀਂ ਇੱਕ ਵਾਅਦੇ ਨੂੰ ਪੂਰਾ ਕਰਨ ਅਤੇ ਇਸਦੇ ਨਤੀਜੇ ਨੂੰ ਵਾਪਸ ਕਰਨ ਦੀ ਉਡੀਕ ਕਰਨ ਲਈ ਉਡੀਕ ਸ਼ਬਦ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ।

ਇੱਥੇ ਅਸਿੰਕਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ Node.js ਵਿੱਚ ਵਾਅਦਾ ਅਤੇ async/await ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਇੱਕ ਉਦਾਹਰਨ ਹੈ:

// A mock function to fetch data from an API
function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const data = { name: 'John', age: 30 };
      resolve(data); // Return data within the Promise
    }, 2000);
  });
}

// Using async/await to handle asynchronous operations
async function getData() {
  try {
    const data = await fetchData(); // Wait for the Promise to complete and return the data
    console.log('Data:', data);
  } catch (error) {
    console.error('Error:', error);
  }
}

// Call the getData function
getData();

ਇਸ ਉਦਾਹਰਨ ਵਿੱਚ, ਅਸੀਂ fetchDataਇੱਕ API (ਜਾਂ ਕਿਸੇ ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨ) ਤੋਂ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਇਹ ਫੰਕਸ਼ਨ ਇੱਕ ਵਾਅਦਾ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਜਿੱਥੇ ਅਸੀਂ resolveਡੇਟਾ ਨੂੰ ਵਾਪਸ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ।

ਫੰਕਸ਼ਨ ਦੇ ਬਾਹਰ fetchData, ਅਸੀਂ try/catchਗਲਤੀਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਬਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਫੰਕਸ਼ਨ ਵਿੱਚ getData, ਅਸੀਂ awaitਵਾਅਦੇ ਦੇ ਪੂਰਾ ਹੋਣ ਅਤੇ ਡੇਟਾ ਵਾਪਸ ਕਰਨ ਦੀ ਉਡੀਕ ਕਰਨ ਲਈ ਕੀਵਰਡ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਜੇਕਰ ਵਾਅਦੇ ਵਿੱਚ ਕੋਈ ਗਲਤੀ ਹੈ, ਤਾਂ ਇਹ ਇੱਕ ਅਪਵਾਦ ਸੁੱਟ ਦੇਵੇਗਾ ਅਤੇ ਅਸੀਂ ਇਸਨੂੰ catchਬਲਾਕ ਵਿੱਚ ਸੰਭਾਲਦੇ ਹਾਂ।

ਅੰਤ ਵਿੱਚ, ਅਸੀਂ getDataਅਸਿੰਕ੍ਰੋਨਸ ਪ੍ਰੋਸੈਸਿੰਗ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ। ਵਾਅਦਾ ਪੂਰਾ ਹੋਣ ਅਤੇ ਡਾਟਾ ਵਾਪਸ ਕਰਨ ਤੋਂ ਬਾਅਦ ਨਤੀਜਾ ਕੰਸੋਲ 'ਤੇ ਲੌਗਇਨ ਕੀਤਾ ਜਾਵੇਗਾ।

ਅਸਿੰਕ੍ਰੋਨਸ ਓਪਰੇਸ਼ਨਾਂ ਨਾਲ ਨਜਿੱਠਣ ਵੇਲੇ ਵਾਅਦਾ ਅਤੇ ਅਸਿੰਕ/ਉਡੀਕ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸਾਡੇ ਕੋਡ ਨੂੰ ਵਧੇਰੇ ਪੜ੍ਹਨਯੋਗ ਅਤੇ ਸਮਝਣ ਵਿੱਚ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਕਾਲਬੈਕ ਨਰਕ ਤੋਂ ਬਚਣ ਵਿੱਚ ਸਾਡੀ ਮਦਦ ਕਰਦਾ ਹੈ ਅਤੇ ਸਾਨੂੰ ਕ੍ਰਮਵਾਰ ਕੋਡ ਲਿਖਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਸਮਕਾਲੀ ਕੋਡ ਲਿਖਣਾ।

 

ਸਿੱਟਾ: ਇਵੈਂਟ ਹੈਂਡਲਿੰਗ ਅਤੇ ਅਸਿੰਕ੍ਰੋਨਸ ਪ੍ਰੋਸੈਸਿੰਗ Node.js ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੇ ਵਿਕਾਸ ਵਿੱਚ ਦੋ ਮਹੱਤਵਪੂਰਨ ਪਹਿਲੂ ਹਨ। ਸੰਬੰਧਿਤ ਸੰਕਲਪਾਂ ਅਤੇ ਸਾਧਨਾਂ ਨੂੰ ਸਮਝਣ ਅਤੇ ਸਹੀ ਢੰਗ ਨਾਲ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ Node.js ਪਲੇਟਫਾਰਮ 'ਤੇ ਕੁਸ਼ਲ, ਲਚਕਦਾਰ ਅਤੇ ਭਰੋਸੇਮੰਦ ਐਪਲੀਕੇਸ਼ਨ ਬਣਾ ਸਕਦੇ ਹੋ।