Async/Await க்கு அறிமுகம்
Async/await என்பது Node.js இல் அசிங்க்ரோனஸ் செயல்பாடுகளைக் கையாள ஒரு நவீன வழியாகும், இது வாக்குறுதிகளின் மேல் கட்டப்பட்டு இன்னும் சிறந்த வாசிப்புத்திறனைக் கொண்ட குறியீட்டை உருவாக்க உதவுகிறது.
Node.js 7.6 இல் அறிமுகப்படுத்தப்பட்டு ES2017 இல் தரநிலையாக்கப்பட்ட, async/await ஒத்திசைவு குறியீடு போல் தோற்றமளிக்கும் மற்றும் செயல்படும் அசிங்க்ரோனஸ் குறியீட்டை எழுத உங்களை அனுமதிக்கிறது.
மேம்பட்ட வாசிப்புத்திறன்
ஒத்திசைவு குறியீடு போல் தோற்றமளிக்கும்
எளிதான பிழை கையாளுதல்
try/catch தொகுதிகளைப் பயன்படுத்துகிறது
வாக்குறுதிகளின் அடிப்படை
வாக்குறுதிகளின் மேல் கட்டப்பட்டது
முக்கிய குறிப்பு:
Async/await அடிப்படையில் மேம்பட்ட வாசிப்புத்திறன் கொண்ட தொடரியல் உடைய வாக்குறுதிகள் ஆகும். இது உங்கள் குறியீட்டை தூய்மையாகவும் பராமரிக்க எளிதாகவும் ஆக்குகிறது.
தொடரியல் மற்றும் பயன்பாடு
தொடரியல் இரண்டு முக்கிய சொற்களைக் கொண்டுள்ளது:
async
வாக்குறுதியை வழங்கும் அசிங்க்ரோனஸ் செயல்பாட்டை அறிவிக்கப் பயன்படுகிறது
await
ஒரு வாக்குறுதி தீர்க்கப்படும் வரை செயல்பாட்டை இடைநிறுத்தப் பயன்படுகிறது, async செயல்பாடுகளுக்குள் மட்டுமே பயன்படுத்த முடியும்
எடுத்துக்காட்டு: அடிப்படை Async/Await
async function getData() {
console.log('Starting...');
const result = await someAsyncOperation();
console.log(`Result: ${result}`);
return result;
}
function someAsyncOperation() {
return new Promise(resolve => {
setTimeout(() => resolve('Operation completed'), 1000);
});
}
// Call the async function
getData().then(data => console.log('Final data:', data));
எடுத்துக்காட்டு: Async/Await உடன் கோப்பு படித்தல்
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('myfile.txt', 'utf8');
console.log(data);
} catch (error) {
console.error('Error reading file:', error);
}
}
readFile();
Try/Catch உடன் பிழை கையாளுதல்
Async/await இன் நன்மைகளில் ஒன்று, நீங்கள் பாரம்பரிய try/catch தொகுதிகளை பிழை கையாளுதலுக்குப் பயன்படுத்தலாம், இது உங்கள் குறியீட்டின் வாசிப்புத்திறனை மேம்படுத்துகிறது.
எடுத்துக்காட்டு: Async/Await உடன் பிழை கையாளுதல்
async function fetchUserData() {
try {
const response = await fetch('https://api.example.com/users/1');
if (!response.ok) {
throw new Error(`HTTP error: ${response.status}`);
}
const user = await response.json();
console.log('User data:', user);
return user;
} catch (error) {
console.error('Error fetching user data:', error);
throw error; // Re-throw the error if needed
}
}
வெவ்வேறு சூழ்நிலைகளுக்கு async/await ஐ Promise .catch() உடன் கலக்கலாம்:
// Using catch with an async function
fetchUserData().catch(error => {
console.log('Caught outside of async function:', error.message);
});
இணையாக வாக்குறுதிகளை இயக்குதல்
Async/await குறியீடு ஒத்திசைவு போல் தோற்றமளிக்கினாலும், சில நேரங்களில் சிறந்த செயல்திறனுக்காக செயல்பாடுகளை இணையாக இயக்க வேண்டியிருக்கும்.
எடுத்துக்காட்டு: வரிசை மற்றும் இணையான செயல்பாடுகள்
// Helper function to simulate an API call
function fetchData(id) {
return new Promise(resolve => {
setTimeout(() => resolve(`Data for ID ${id}`), 1000);
});
}
// Sequential operation - takes ~3 seconds
async function fetchSequential() {
console.time('sequential');
const data1 = await fetchData(1);
const data2 = await fetchData(2);
const data3 = await fetchData(3);
console.timeEnd('sequential');
return [data1, data2, data3];
}
// Parallel operation - takes ~1 second
async function fetchParallel() {
console.time('parallel');
const results = await Promise.all([
fetchData(1),
fetchData(2),
fetchData(3)
]);
console.timeEnd('parallel');
return results;
}
// Demo
async function runDemo() {
console.log('Running sequentially...');
const seqResults = await fetchSequential();
console.log(seqResults);
console.log('\nRunning in parallel...');
const parResults = await fetchParallel();
console.log(parResults);
}
runDemo();
Async/Await vs வாக்குறுதிகள் vs கால்பேக்குகள்
அதே பணி வெவ்வேறு அசிங்க்ரோனஸ் முறைகளுடன் எவ்வாறு கையாளப்படுகிறது என்பதைப் பார்ப்போம்:
கால்பேக்குகளுடன்
function getUser(userId, callback) {
setTimeout(() => {
callback(null, { id: userId, name: 'John' });
}, 1000);
}
function getUserPosts(user, callback) {
setTimeout(() => {
callback(null, ['Post 1', 'Post 2']);
}, 1000);
}
// Using callbacks
getUser(1, (error, user) => {
if (error) {
console.error(error);
return;
}
console.log('User:', user);
getUserPosts(user, (error, posts) => {
if (error) {
console.error(error);
return;
}
console.log('Posts:', posts);
});
});
வாக்குறுதிகளுடன்
function getUserPromise(userId) {
return new Promise(resolve => {
setTimeout(() => {
resolve({ id: userId, name: 'John' });
}, 1000);
});
}
function getUserPostsPromise(user) {
return new Promise(resolve => {
setTimeout(() => {
resolve(['Post 1', 'Post 2']);
}, 1000);
});
}
// Using promises
getUserPromise(1)
.then(user => {
console.log('User:', user);
return getUserPostsPromise(user);
})
.then(posts => {
console.log('Posts:', posts);
})
.catch(error => {
console.error(error);
});
Async/Await உடன்
// Using async/await
async function getUserAndPosts() {
try {
const user = await getUserPromise(1);
console.log('User:', user);
const posts = await getUserPostsPromise(user);
console.log('Posts:', posts);
} catch (error) {
console.error(error);
}
}
getUserAndPosts();
| முறை | நன்மைகள் | குறைபாடுகள் |
|---|---|---|
| கால்பேக்குகள் |
|
|
| வாக்குறுதிகள் |
|
|
| Async/Await |
|
|
சிறந்த நடைமுறைகள்
Node.js இல் async/await உடன் பணிபுரியும் போது, இந்த சிறந்த நடைமுறைகளைப் பின்பற்றவும்:
Async செயல்பாடுகள் எப்போதும் வாக்குறுதிகளை வழங்கும் என்பதை நினைவில் கொள்ளுங்கள்
async function myFunction() {
return 'Hello';
}
// This returns a Promise that resolves to 'Hello', not the string 'Hello' directly
const result = myFunction();
console.log(result); // Promise { 'Hello' }
// You need to await it or use .then()
myFunction().then(message => console.log(message)); // Hello
இணையான செயல்பாடுகளுக்கு Promise.all ஐப் பயன்படுத்தவும்
செயல்பாடுகள் இணையாக இயக்க முடியும் போது, செயல்திறனை மேம்படுத்த Promise.all ஐப் பயன்படுத்தவும்
எப்போதும் பிழைகளைக் கையாளவும்
try/catch தொகுதிகளைப் பயன்படுத்தவும் அல்லது async செயல்பாட்டு அழைப்பில் .catch() ஐச் சங்கிலியாக்கவும்
Async/await ஐ கால்பேக்குகளுடன் கலக்க வேண்டாம்
util.promisify அல்லது தனிப்புற மறைப்புகளைப் பயன்படுத்தி கால்பேக்-அடிப்படையிலான செயல்பாடுகளை வாக்குறுதி-அடிப்படையிலானவற்றாக மாற்றவும்
எடுத்துக்காட்டு: கால்பேக்குகளை வாக்குறுதிகளாக மாற்றுதல்
const util = require('util');
const fs = require('fs');
// Convert callback-based function to Promise-based
const readFile = util.promisify(fs.readFile);
async function readFileContents() {
const data = await readFile('file.txt', 'utf8');
return data;
}
சிறந்த நடைமுறை:
Node.js 14.8.0 மற்றும் அதற்கு மேல் உள்ள ECMAScript தொகுதிகள் (ESM) இல் கிடைக்கும் "மேல்-நிலை await" அம்சத்தை அறிந்து கொள்ளுங்கள், இது தொகுதி நிலையில் async செயல்பாடுகளுக்கு வெளியே await ஐப் பயன்படுத்த அனுமதிக்கிறது.
சுருக்கம்
ஒத்திசைவு போன்ற குறியீடு
அசிங்க்ரோனஸ் குறியீடு ஒத்திசைவு குறியீடு போல் தோற்றமளிக்கும்
வாக்குறுதிகளின் அடிப்படை
வாக்குறுதிகளின் மேல் கட்டப்பட்டது
try/catch பிழை கையாளுதல்
பாரம்பரிய பிழை கையாளுதல் முறைகளைப் பயன்படுத்துகிறது
இணையான செயல்பாடு
Promise.all உடன் இணையான செயல்பாட்டை ஆதரிக்கிறது
முக்கிய புள்ளிகள்:
- Async/await வாசிப்புத்திறனை கணிசமாக மேம்படுத்துகிறது
- வாக்குறுதிகளின் மேல் கட்டப்பட்டுள்ளது
- try/catch உடன் பிழை கையாளுதல் எளிதானது
- இணையான செயல்பாட்டிற்கு Promise.all ஐப் பயன்படுத்தவும்
- எப்போதும் async செயல்பாடுகள் வாக்குறுதிகளை வழங்கும் என்பதை நினைவில் கொள்ளுங்கள்
பயிற்சி
சரியான முக்கிய சொல்லை தேர்ந்தெடுக்கவும்.
______ முக்கிய சொல் வாக்குறுதியை வழங்கும் ஒரு செயல்பாட்டிற்கு முன் பயன்படுத்தப்படுகிறது.